Installation Advise

The following should be used as helpful advise and not viewed as installation instructions. Users are likely more comfortable with their own platform than we are, so please let us know if anything could be improved. Please do read the README.md files in the installation package and in the source repositories before deploying an installation for real-world use.

We generally agree more with the design decisions of *BSD than GNU/Linux because we prefer thoroughly tested software that (almost) always work and is fully documented, but the *BSD user base is much smaller than that of GNU/Linux, so we have decided to target the latter as the primary platform, align our software with POSIX as much as possible, and try to provide workarounds in the places where GNU/Linux is not aligned with it. We hope that all users respect that we have gone to great lengths to remain as portable as possible to the benefit of all.

Platforms




Ubuntu 22.04.1

On a fresh install of Ubuntu Server 22.04.1 the following suffices (on the desktop version some of these packages are installed by default). You can execute the following and it will download, build, and install everything.

# Install prerequisites. xterm is only needed for running the demo.
sudo apt-get --yes upgrade
sudo apt-get install --yes \
m4 cpp gcc make libtool automake autoconf libgmp-dev xterm openjdk-11-jdk

# Fetch, build, and install VMN as a single demonstration package.
wget https://www.verificatum.org/files/verificatum-vmn-3.1.0-full.tar.gz
tar xvfz verificatum-vmn-3.1.0-full.tar.gz
cd verificatum-vmn-3.1.0-full

# Please study README.md in the installation package before
# installing.
less README.md

# Build and install everything. This invokes sudo when installing.
make install

# Run the demo directly without going down to demo subdirectory.
# Consult README.md in demo/mixnet for more information.
make demo


CentOS 9 Stream

On a fresh install of CentOS 9 Stream you can execute the following directly and it will install everything.

# Install prerequisites. xterm is only needed for running the demo.
sudo yum -y update
sudo yum install -y m4 cpp gcc make libtool automake autoconf \
    gmp-devel xterm java-11-openjdk-devel redhat-rpm-config

# Fetch, build, and install VMN as a single demonstration package.
wget https://www.verificatum.org/files/verificatum-vmn-3.1.0-full.tar.gz
tar xvfz verificatum-vmn-3.1.0-full.tar.gz
cd verificatum-vmn-3.1.0-full

# Please study README.md in the installation package before
# installing.
less README.md

# Build and install everything. This invokes sudo when installing.
make install

# Run the demo directly without going down to demo subdirectory.
# Consult README.md in demo/mixnet for more information.
make demo


OpenBSD 6.6

Generally OpenBSD users have strong opinions on how set up machines and we can assume less about what the system looks like. The following should therefore be viewed as a useful hints and not a self-contained script that can be cut and pasted.

OpenBSD uses a very old patched version of GCC, so it should be replaced by Clang as below unless you compile your own GCC. Similarly, OpenBSD uses its own version of Libtool, but this seems to cause no problems.

Clang and OpenBSD Libtool are supposed to be drop-in replacements for GCC and GNU libtool, but there are differences. OpenBSD uses the original make command by default instead of GNU make (which has non-POSIX extensions). Thus, do not forget to use gmake instead of make and remember that aliases are not forwarded by gmake when making targets.

OpenBSD uses doas by default instead of sudo. You can of course install sudo, but we use a minor workaround to avoid that you have to do this merely to install the package.

Installing and Setting Up Pre-requisites

# Install required packages.
doas pkg_add -r -v gmake m4 automake-1.16.3 libtool bzip2 jdk-11.0.14.9.1p0v0

# Install GMP. There are several ways to do this and we trust that the
# user knows how to build it.

# The following should go in the appropriate .profile or corresponding
# file that sets up the environment globally.

# This must be changed if other versions of these packages are
# installed and it must match the versions used to prepare the package
# unless you wish to run reconfigure.
AUTOCONF_VERSION=2.69
AUTOMAKE_VERSION=1.16

# This must be changed if another version of the JDK is used.
JPATH=/usr/local/jdk-11

# Set up paths. This should work if the above variables are set up
# properly, but you may wish to drop some of it if you already set these
# variables.
PATH=${PATH}:${JPATH}/bin
C_INCLUDE_PATH=${C_INCLUDE_PATH}:/usr/local/include
C_INCLUDE_PATH=${C_INCLUDE_PATH}:${JPATH}/include
C_INCLUDE_PATH=${C_INCLUDE_PATH}:${JPATH}/include/openbsd
LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/usr/local/lib
LIBRARY_PATH=${LIBRARY_PATH}:/usr/local/lib
CC=clang

export AUTOCONF_VERSION AUTOMAKE_VERSION
export PATH
export C_INCLUDE_PATH LD_LIBRARY_PATH LIBRARY_PATH
export CC

Fetching and Installing the Demo VMN Package

The rest is similar to the Ubuntu installation except that wget is not installed by default in OpenBSD so we use its ftp command (which incidentally does not provide identical functionality as the Linux ftp command). Remember to configure doas such that the appropriate environment variables are forwarded to root when installing.

# Fetch and unpack VMN as a single demonstration package.
ftp https://www.verificatum.org/files/verificatum-vmn-3.1.0-full.tar.gz
tar xvfz verificatum-vmn-3.1.0-full.tar.gz
cd verificatum-vmn-3.1.0-full

# Please study README.md in the installation package before
# installing.
less README.md

# Build and install everything. This invokes sudo when installing.
gmake install

# Run the demo directly without going down to demo subdirectory.
# Consult README.md in demo/mixnet for more information.
gmake demo


FreeBSD 13.1

Similarly to OpenBSD users, FreeBSD users set up their machines differently and we can assume less about what the system looks like. The following should therefore be viewed as a useful hints and not a self-contained script that can be cut and pasted.

OpenBSD uses the original make command by default instead of GNU make (which has non-POSIX extensions). Thus, do not forget to use gmake instead of make.

Installing and Setting Up Pre-requisites

# Install required packages as root.
pkg install -y autotools gmake gtar wget openjdk11

# Install GMP. There are several ways to do this and we trust that the
# user knows how to build it.

# The following should go in the appropriate .profile or corresponding
# file that sets up the environment globally.

# This must be changed if other versions of these packages are
# installed and it must match the versions used to prepare the package
# unless you wish to run reconfigure.
AUTOCONF_VERSION=2.71
AUTOMAKE_VERSION=1.16

# This must be changed if another version of the JDK is used.
JPATH=/usr/local/openjdk11

# Set up paths. This should work if the above variables are set up
# properly, but you may wish to drop some of it if you already set these
# variables.
PATH=${PATH}:${JPATH}/bin
C_INCLUDE_PATH=${C_INCLUDE_PATH}:/usr/local/include
C_INCLUDE_PATH=${C_INCLUDE_PATH}:${JPATH}/include
C_INCLUDE_PATH=${C_INCLUDE_PATH}:${JPATH}/include/freebsd
LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/usr/local/lib
LIBRARY_PATH=${LIBRARY_PATH}:/usr/local/lib

export AUTOCONF_VERSION AUTOMAKE_VERSION
export PATH
export C_INCLUDE_PATH LD_LIBRARY_PATH LIBRARY_PATH

Fetching and Installing the Demo VMN Package

The rest is similar to the OpenBSD installation, except that we use wget to download the package.

# Fetch and unpack VMN as a single demonstration package.
wget https://www.verificatum.org/files/verificatum-vmn-3.1.0-full.tar.gz
tar xvfz verificatum-vmn-3.1.0-full.tar.gz
cd verificatum-vmn-3.1.0-full

# Please study README.md in the installation package before
# installing.
less README.md

# Build and install everything. This invokes sudo when installing.
gmake install

# Run the demo directly without going down to demo subdirectory.
# Consult README.md in demo/mixnet for more information.
gmake demo