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.

Portability is complicated by the resistance of all camps in the open source community to reach consensus. We consider this fragmentation to be harmful, since there is no way to make everybody happy for programmers who simply wish to share their work.

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 this decision and note that we have gone to great lengths to remain as portable as possible to the benefit of all.

Platforms Considered

Ubuntu 18.4
OpenBSD 6.4

Ubuntu 18.04

On a fresh install of Ubuntu 18.04 server the following suffices (on the desktop version some of these packages are installed by default), i.e., you can execute the following directly in an Ubuntu 18.04 and it will install everything. You can in fact copy and paste the following into a script and execute it.

# 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.0.4-full.tar.gz
tar xvfz verificatum-vmn-3.0.4-full.tar.gz
cd verificatum-vmn-3.0.4-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.4

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. Furthermore, OpenBSD uses the original make command instead of GNU make (which has non-POSIX extensions). Thus, do not forget to use gmake and remember that aliases are not forwarded by gmake when making targets.

Furthermore, 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.15.1 autoconf-2.69p2 libtool bzip2 jdk

# Install GMP. There are several ways to do this and we trust that the
# user knows how to build it. It might be a good idea to build it with
# Clang though.

# 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.15

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

# 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, build, and install VMN as a single demonstration package.
ftp https://www.verificatum.org/files/verificatum-vmn-3.0.4-full.tar.gz
tar xvfz verificatum-vmn-3.0.4-full.tar.gz
cd verificatum-vmn-3.0.4-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

Copyright © Douglas Wikström 2007-2019 All rights reserved