Introduction

This document describes how to build an Aeternity node from source on:

  • Ubuntu 20.04 LTS
  • MacOS (latest)
  • Archlinux 20210404
  • openSUSE Leap 15.2

While the package should build on most linux distributions that's not verified (in CI) for each release on other than the below platforms:

  • Ubuntu 18.04 LTS
  • MacOS (latest)

The commands below assume you are logged in with sudo user.

The node have couple of main dependencies that have to be installed to build it from source:

Dependencies

Ubuntu 20.04

Update package database, packages and install the common tools and libraries:

sudo apt-get -qq update \
&& sudo apt-get -y upgrade \
&& sudo apt-get -qq -y install git autoconf build-essential cmake erlang libsodium-dev libgmp-dev

MacOS

The easiest way to install package on MacOS is Homebrew, it can be installed by running:

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

Then install the build dependencies using the brew command:

brew update
brew install erlang@24 openssl libsodium autoconf gmp cmake automake

If building on an m1 Mac homebrew does not automatically set up symlinks to system directories, so before running make set up the build path with:

export PATH=/opt/homebrew/bin:$PATH
export CFLAGS="-I/opt/homebrew/include"
export CXXFLAGS="-I/opt/homebrew/include"
export LDFLAGS="-L/opt/homebrew/lib"

Archlinux

Update package database, packages and install the common tools and libraries:

sudo pacman -Sy
sudo pacman -S git base-devel cmake ncurses erlang23-nox libsodium gmp

openSUSE Leap 15.2

sudo zypper install -t pattern devel_basis
sudo zypper install cmake gcc-c++ git erlang libsodium-devel gmp-devel

Building

The source code of the Aeternity node can be obtained by cloning the public GitHub repository:

git clone https://github.com/aeternity/aeternity.git aeternity_source && cd aeternity_source

NOTE: By default git will checkout the master (default) branch of the source code. To build a particular version it should be checkout first:

VERSION=X.Y.Z # set a particular version
git checkout tags/v${VERSION:?}

Production build

One can create a production build by running:

make prod-build

If prod-build went fine, configuration is in place, one should be able to navigate to the build artifacts directory and start the Aeternity node:

cd _build/prod/rel/aeternity/
bin/aeternity daemon

See operation documentation for more details.

Production package

Alternatively a production package similar to what is distributed via GitHub releases can be created by running:

make prod-package

Once the packaging is done, the package is created in the _build/prod/rel/aeternity/ directory, e.g. _build/prod/rel/aeternity/aeternity-X.Y.Z.tar.gz.

To deploy the package for example in ~/aeternity/node one should just unarchive it to that directory:

mkdir -p ~/aeternity/node
tar xf _build/prod/rel/aeternity/aeternity-*.tar.gz -C ~/aeternity/node

Then start the node in background mode:

~/aeternity/node/bin/aeternity daemon

See operation documentation for more details.