II. Cài đặt trình biên dịch Glasgow Haskell và Cabal.
Để xây dựng Cardano Node từ mã nguồn, bạn cần cài đặt Glasgow Haskell Compiler (GHC) và Cabal (một công cụ để xây dựng các ứng dụng và thư viện).
Với mỗi bản phát hành của Cardano Node, Input-Output (IOHK) khuyên dùng các phiên bản GHC và Cabal cụ thể để biên dịch các tệp nhị phân (binaries). Ví dụ, bạn có thể tham khảo mục “Cài đặt cardano-node và cardano-cli từ mã nguồn” trên Cardano Developer Portal.
Bảng 1. Yêu cầu phiên bản Cardano Node hiện tại.
Ngày phát hành | Phiên bản Cardano Node | Phiên bản Cardano CLI | Phiên bản GHC | Phiên bản Cabal |
30-4-2025 | 10.4.1 | 10.8.0.0 | 9.6 | 3.8/3.12 |
. Cài đặt cài đặt GHC và Cabal:
1. Để cài đặt phiên bản mới nhất của tất cả các gói đã cài đặt trước
sudo apt-get update -y
sudo apt-get upgrade -y
2. cài đặt các gói và công cụ cần thiết cho việc tải xuống và biên dịch mã nguồn Cardano
sudo apt-get install autoconf automake build-essential curl g++ git jq libffi-dev libgmp-dev libncursesw5 libssl-dev libsystemd-dev libtinfo-dev libtool make pkg-config tmux wget zlib1g-dev liblmdb-dev -y
3. Để liệt kê tất cả các gói đã cài đặt trên máy tính của bạn, gõ apt list –installed
- Trong quá trình cài đặt, khi được nhắc:
i. Nhấn ENTER để tiếp tục.
ii. Để thêm biến PATH cần thiết vào $HOME/.bashrc, hãy nhập P
iii. Khi được nhắc cài đặt haskell-language-server (HLS), hãy nhập N
iv. Khi được nhắc cài đặt stack, hãy nhập N
v. Nhấn ENTER để tiếp tục.
4. Khi GHCup hoàn tất cài đặt GHC và Cabal, hãy nhập các lệnh sau để tải lại cấu hình shell của bạn, sau đó xác nhận rằng GHCup đã được cài đặt chính xác:
source $HOME/.bashrc
ghcup --version
– Nếu GHCup được cài đặt đúng, lệnh ghcup –version sẽ trả về The GHCup Haskell installer, version <GHCupVersionNumber>, trong đó <GHCupVersionNumber> là số phiên bản GHCup đã cài đặt của bạn.
5. Để đặt phiên bản Glasgow Haskell Compiler theo yêu cầu để biên dịch bản phát hành Cardano Node hiện tại, gõ các lệnh sau, trong đó <GHCVersionNumber> là phiên bản GHC mà bạn cần cài đặt và sử dụng:
ghcup install ghc <GHCVersionNumber>
ghcup set ghc <GHCVersionNumber>
ghc --version
6. Để đặt phiên bản Cabal theo yêu cầu để biên dịch bản phát hành Cardano Node hiện tại, gõ các lệnh sau, trong đó <CabalVersionNumber> là phiên bản Cabal mà bạn cần cài đặt và sử dụng:
ghcup install cabal <CabalVersionNumber>
ghcup set cabal <CabalVersionNumber>
cabal --version
7. tạo một thư mục làm việc (working directory) để lưu trữ mã nguồn và các bản dựng liên quan đến Cardano Node
mkdir $HOME/git
cd $HOME/git
8. Download biên dịch và cài đặt libsodium.
git clone https://github.com/input-output-hk/libsodium
cd libsodium
git checkout dbb48cc
./autogen.sh
./configure
make
sudo make install
Nếu bạn đang sử dụng bản phân phối Debian GNU/Linux, bạn có thể sử dụng lệnh sau để tạo một liên kết tượng trưng (symbolic link):
sudo ln -s /usr/local/lib/libsodium.so.23.3.0 /usr/lib/libsodium.so.23
Nếu bạn đang sử dụng CentOS Linux trên Amazon Web Services, bạn có thể cần cập nhật các liên kết tượng trưng có sẵn cho các thư viện chia sẻ hiện tại:
sudo ldconfig
Nếu bạn đang sử dụng Ubuntu trên Raspberry Pi 4, gõ lệnh sau để khắc phục thông báo lỗi cannot find -lnuma khi biên dịch libsodium:
sudo apt-get install libnuma-dev
9. Download biên dịch và cài đặt libsecp256k1
cd $HOME/git
git clone --depth 1 --branch v0.3.2 https://github.com/bitcoin-core/secp256k1
cd secp256k1
./autogen.sh
./configure --enable-module-schnorrsig --enable-experimental
make
make check
sudo make install
sudo ldconfig
10. Download và cài đặt thư viện blst.
cd $HOME/git
git clone https://github.com/supranational/blst
cd blst
git checkout v0.3.11
./build.sh
cat > libblst.pc << EOF
prefix=/usr/local
exec_prefix=\${prefix}
libdir=\${exec_prefix}/lib
includedir=\${prefix}/include
Name: libblst
Description: Multilingual BLS12-381 signature library
URL: https://github.com/supranational/blst
Version: 0.3.11
Cflags: -I\${includedir}
Libs: -L\${libdir} -lblst
EOF
sudo cp libblst.pc /usr/local/lib/pkgconfig/
sudo cp bindings/blst_aux.h bindings/blst.h bindings/blst.hpp /usr/local/include/
sudo cp libblst.a /usr/local/lib
sudo chmod u=rw,go=r /usr/local/{lib/{libblst.a,pkgconfig/libblst.pc},include/{blst.{h,hpp},blst_aux.h}}
11. Sử dụng một trình soạn thảo văn bản, mở tệp $HOME/.bashrc, sau đó thêm các dòng sau vào cuối tệp:
# Đặt biến môi trường để trình biên dịch tìm thấy các thư viện libsodium, libsecp256k1 và blst trên máy tính của bạn
export LD_LIBRARY_PATH="/usr/local/lib:$LD_LIBRARY_PATH"
export PKG_CONFIG_PATH="/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH"
# Đặt biến môi trường chỉ ra đường dẫn tệp đến các tệp cấu hình và tập lệnh
# liên quan đến việc vận hành node Cardano của bạn
export NODE_HOME="$HOME/cardano-my-node"
# Đặt biến môi trường chỉ ra cụm mạng Cardano nơi node của bạn chạy
export NODE_CONFIG="mainnet"
# Đặt biến môi trường chỉ ra nơi tệp socket của node Cardano được đặt
export CARDANO_NODE_SOCKET_PATH="$NODE_HOME/db/socket"
Nếu bạn định sử dụng node Cardano của mình trên mạng testnet thay vì mainnet, hãy thay thế dòng export NODE_CONFIG=”mainnet” trong tệp $HOME/.bashrc bằng export NODE_CONFIG=”testnet”. Ngoài ra, khi thực hiện theo hướng dẫn “Cách thiết lập một Cardano Stake Pool”, hãy thay thế mọi trường hợp tùy chọn lệnh –mainnet bằng –testnet-magic <MagicNumber>, trong đó <MagicNumber> là số magic của mạng testnet mà bạn muốn sử dụng. Để biết chi tiết về các mạng testnet có sẵn, xem mục Environments.
Lưu và đóng tệp $HOME/.bashrc.
12. Tạo thư mục được đặt cho biến môi trường NODE_HOME trong tệp $HOME/.bashrc của bạn:
mkdir $HOME/cardano-my-node
13. Tải lại cấu hình shell của bạn:
source $HOME/.bashrc