Compilando cardano-node

Esta guía te enseña a compilar cardano-node versión haskell desde un computador con Linux basado en distribuciones Debian (Ubuntu, Kubuntu, debian9, entre otros).

Esta guía se probó en un computador con Debian 9.

Instalar Cabal y GHC

Antes de comenzar quisiera poner en contexto estos dos programas, ya que es bueno saber de sus funciones. El gch es un compilador para código Haskell como lo es g++ para el código C++ y cabal es un constructor de paquetes como podría ser el MakeFile en Linux. Ahora sabiendo esto, procedemos a agregar los repositorios nesesarios para instalar estos programas.

Agregando los repositorios:

Para versiones de Ubuntu:

Escribe en tu terminal.

sudo add-apt-repository ppa:hvr/ghc

Para versiones Debian:

Escribe en tu terminal.

sudo apt edit-sources

Ahora deberás agregar al final del archivo una de las siguentes lineas.

Para Debian 10:

deb http://downloads.haskell.org/debian buster main

Para Debian 9:

deb http://downloads.haskell.org/debian stretch main

Para Debian 8:

deb http://downloads.haskell.org/debian jessie main

Una vez agregada la línea correspondiente al de tu sistema operativo, guardas los cambios con CTRL+o luego ENTER y después cierras con CTRL+x . Luego instalas la llave GPG para que te permita actualizar e instalar los paquetes de sus repositorios, para ello escribe en tu terminal.

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys BA3CBA3FFE22B574

Actualizar los Repositorios del sistema

Despúes de haber agregado el repositorio correspondiente a tu sistema, se procede a actualizar, en tu terminal escribe.

sudo apt update

Instalando las Dependencias

Ahora procedemos a instalar las dependencias necesarias para compilar nuestro nodo, en tu terminal escribe.

sudo apt install cabal-install-3.0 ghc-8.6.5 libsystemd-dev zlib1g-dev pkg-config libgmp-dev libssl-dev libtinfo-dev libsodium-dev

Ahora copiamos los Simlink de los programas que se instalaron en la carpeta /opt/cabal/bin/ y /opt/ghc/bin/ y los pasas a tu carpeta /usr/bin/ para que el sistema pueda detectarlos, también se copian los 3 ejecutables que están en la carpeta "8.6.5". Para ello en tu terminal cada línea de a continuación ejecútala por separado.

sudo cp /opt/cabal/bin/cabal /usr/bin/cabal
sudo cp /opt/ghc/bin/ghc /usr/bin/ghc
sudo cp /opt/ghc/bin/ghci /usr/bin/ghci
sudo cp /opt/ghc/bin/ghc-pkg /usr/bin/ghc-pkg
sudo cp /opt/ghc/bin/haddock /usr/bin/haddock
sudo cp /opt/ghc/bin/runghc /usr/bin/runghc
sudo cp /opt/ghc/8.6.5/bin/hsc2hs /usr/bin/hsc2hs
sudo cp /opt/ghc/8.6.5/bin/hp2ps /usr/bin/hp2ps
sudo cp /opt/ghc/8.6.5/bin/hpc /usr/bin/hpc

Si a futuro deseas desintalar el paquete ghc-8.6.5 y cabal-install-3.0, también deberás eliminar esos archivos que se copiaron en la carpeta /usr/bin. En tal caso sería:

sudo rm /usr/bin/cabal /usr/bin/ghc /usr/bin/ghci /usr/bin/ghc-pkg /usr/bin/haddock /usr/bin/runghc /usr/bin/hsc2hs /usr/bin/hp2ps /usr/bin/hpc

*En la carpeta /usr/bin es donde se guardan los ejecutables de tus programas, los típicos que llamas cuando los escribes desde la terminal, así que procura solo borrar los archivos que pusiste ahí.

Ahora comprobamos si Cabal se ha instalado y vemos que versión tenemos escribiendo en la terminal:

cabal --version

La versión necesaria para poder compilar nuestro cardano-node es de la 3.0.0 en adelante.

Compilando cardano-node

Primero deberás hacer una actualización de los repositorios de cabal, en tu terminal escribe.

cabal update

Ahora se procede a descargar el cardano-node, existen dos opciones, hacerlo mediante git o descargarlo directamente desde la página oficial en Github https://github.com/input-output-hk/cardano-node/releases , en este tutorial se descargara desde git, que es lo que recomiendan los manuales oficiales para la etapa de F&F. Primero creas un carpeta con el nombre de tu preferencia, el nombre debe ir sin espacios, para este ejemplo usaremos "shelley_haskell".

mkdir shelley_haskell

Ahora entras en esa carpeta y con git descargamos cardano-node.

cd shelley_haskell
git clone https://github.com/input-output-hk/cardano-node.git

Cuando termine de descargar, en el directorio habrá una carpeta llamada cardano-node, es ahí donde debes entrar, y desde ahí dentro ejecutar en tu terminal el comando "git fetch --all --tags" y "git tag", esteo desplegara todos los tags disponibles, para este tutorial se usara el tag 1.18, por lo que lo seleccionamos con "git checkout tags/1.18.0"

cd cardano-node
git fetch --all --tags && git tag
git checkout tags/1.18.0

antes de proceder a compilar se debera enlazar la libreria libsodium para que pueda compilar sin errores

echo -e "package cardano-crypto-praos\n flags: -external-libsodium-vrf" > cabal.project.local

Ahora para compilar se ingresa el siguente comando

cabal build cardano-node cardano-cli

Por ejemplo debería verse algo similar en tu terminal:
tuusuario@tuusuario:~/cualquier/ubicación/cardano-node$ cabal build cardano-node cardano-cli

Una vez que termine de compilar (según el computador el tiempo de compilación puede variar, en mi caso demoro 2 horas aprox con un procesador intel coreduo 2.2ghz), ve a la siguiente ubicación dentro de tu carpeta, para este ejemplo es la carpeta "cardano-node".

cardano-node/dist-newstyle/build/x86_64-linux/ghc-8.6.5/

Ahí encontraras las carpetas:

cardano-node-1.18.0 cardano-cli-1.18.0

y dentro de ellas estarán los archivos compilados en sus respectivas carpetas "x/cardano-node/build/cardano-node/" y "x/cardano-cli/build/cardano-cli" .

Felicidades tienes tu nodo Haskell compilado para tu sistema.

Eso es todo por ahora.

Referencias:
https://downloads.haskell.org/~debian/
https://www.haskell.org/downloads/#minimal
https://www.haskell.org/cabal/
https://www.haskell.org/ghc/
https://github.com/input-output-hk/cardano-node/blob/master/README.md

Si deseas apoyarme para seguir creando más contenido en español, puedes hacerlo delegando en mi Pool.