-
We need the following packages and tools on our Linux system to download the source code and build it:
- the version control system
git
, - the
gcc
C-compiler, - C++ support for
gcc
, - developer libraries for the the arbitrary precision library
gmp
, - developer libraries for the compression library
zlib
, - developer libraries for
systemd
, - developer libraries for
ncurses
, ncurses
compatibility libraries,- the Haskell build tool
cabal
, - the GHC Haskell compiler.
If we are using an AWS instance running Amazon Linux AMI 2 (see the AWS walk-through for how to get such an instance up and running) or another CentOS/RHEL based system, we can install these dependencies as follows:
sudo yum update -y sudo yum install git gcc gcc-c++ gmp-devel make tar wget zlib-devel -y sudo yum install systemd-devel ncurses-devel ncurses-compat-libs -y
For Debian/Ubuntu use the following instead:
sudo apt-get update -y sudo apt-get -y install build-essential pkg-config libffi-dev libgmp-dev libssl-dev libtinfo-dev libsystemd-dev zlib1g-dev make g++ tmux git jq wget libncursesw5 -y
If you are using a different flavor of Linux, you will need to use the package manager suitable for your platform instead of
yum
orapt-get
, and the names of the packages you need to install might differ.We download, unpack, install and update Cabal:
wget https://downloads.haskell.org/~cabal/cabal-install-3.2.0.0/cabal-install-3.2.0.0-x86_64-unknown-linux.tar.xz tar -xf cabal-install-3.2.0.0-x86_64-unknown-linux.tar.xz rm cabal-install-3.2.0.0-x86_64-unknown-linux.tar.xz cabal.sig mkdir -p ~/.local/bin mv cabal ~/.local/bin/
This will work on a fresh AWS instance and assumes that folder
~/.local/bin
is in yourPATH
. On other systems, you must either move the executable to a folder that is in yourPATH
or modify yourPATH
by adding the linenano ~/.bashrc
add export PATH="~/.local/bin:$PATH" at the end of the your
.bashrc
-file. then run the following command to make it active: source ~/.bashrcAbove instructions install Cabal version
3.2.0.0
. You can check the version by typingcabal update cabal --version
Note: You may need to run
cabal user-config update
to make sure the cabal configuration is amended to the installed version of cabal. Doing this will make surecabal install ...
correctly symlinks the binaries created into~/.cabal/bin
when the--installdir
option is omitted.Finally we download and install GHC:
wget https://downloads.haskell.org/~ghc/8.6.5/ghc-8.6.5-x86_64-deb9-linux.tar.xz tar -xf ghc-8.6.5-x86_64-deb9-linux.tar.xz rm ghc-8.6.5-x86_64-deb9-linux.tar.xz cd ghc-8.6.5 ./configure sudo make install cd ..
- the version control system
-
To download the source code, we use git:
git clone https://github.com/input-output-hk/cardano-node.git
This should create a folder
cardano-node
, then download the latest source code from git into it. After the download has finished, we can check its content byls cardano-node
Note that the content of your
cardano-node
-folder can slightly differ from this! -
We change our working directory to the downloaded source code folder:
cd cardano-node
-
For reproducible builds, we should check out a specific release, a specific "tag". For the FF-testnet, we will use tag
1.13.0
, which we can check out as follows:git fetch --all --tags git checkout tags/1.13.0
-
Now we build and install the node with
cabal
, which will take a couple of minutes the first time you do a build. Later builds will be much faster, because everything that does not change will be cached.cabal install cardano-node cardano-cli
This will build and install
cardano-node
andcardano-cli
into your~/.cabal/bin
folder by default, so the remark about yourPATH
from above applies here as well: Make sure folder~/.cabal/bin
is in your path or copy the executables to a folder that is. Alternatively you can runcabal install cardano-node cardano-cli --installdir="$HOME/.local/bin"
to install thecardano-node
andcardano-cli
directly into your~/.local/bin
folder.Note: When using cabal install, make sure you have
overwrite-policy: always
in your.cabal/config
or delete old version ofcardano-node
andcardano-cli
from~/.cabal/bin
. Otherwise cabal install will not overwrite the old executables. -
If you ever want to update the code to a newer version, go to the
cardano-node
directory, pull the latest code withgit
and rebuild.This will be much faster than the initial build:
cd cardano-node git fetch --all --tags git tag git checkout tags/<the-tag-you-want> cabal install cardano-node cardano-cli
This will build and install
cardano-node
andcardano-cli
into your~/.cabal/bin
folder. Alternatively you can runcabal install cardano-node cardano-cli --installdir="$HOME/.local/bin"
to install thecardano-node
andcardano-cli
directly into your~/.local/bin
folder.Note: It might be necessary to delete the
db
-folder (the database-folder) before running an updated version of the node.Note: By default
cabal install
will not overwrite an existing link in~/.cabal/bin
, so you would need to delete old versions ofcardano-node
andcardano-cli
before installing new ones. Alternatively you can setoverwrite-policy: always
in your
cabal
-configuration at~/.cabal/config
. -
We can start a node on the Cardano mainnet with
scripts/mainnet.sh
Congratulations! You have installed the node, started it and connected it to the Cardano mainnet.