To build all of the Moonshot components, you need various packages installed. To install all of these, see below:
apt-get install build-essential automake autoconf libtool autopoint pkg-config libgtk-3-dev libgee-dev\
libnewt-dev valac desktop-file-utils libssl-dev libdbus-glib-1-dev git dh-autoreconf devscripts\
debhelper autotools-dev libshibsp-dev libradsec-dev libkrb5-dev libshibresolver-dev libjansson-dev libssl-dev\
libboost-dev liblog4shib-dev dh-autoreconf devscripts libconfuse-dev libevent-dev libtalloc-dev libsqlite3-dev\
quilt dh-systemd libcap-dev libgdbm-dev libiodbc2-dev libjson0 libjson0-dev libldap2-dev libpam0g-dev libpcap-dev\
libperl-dev libmysqlclient-dev libpq-dev libreadline-dev libsasl2-dev libwbclient-dev libyubikey-dev libykclient-dev\
libmemcached-dev libhiredis-dev python-dev samba-dev wget libxml2-dev libsecret-1-dev libgcr-3-dev libsystemd-dev \
libkeyutils-dev sqlite3 dbus-x11
Build and install Moonshot from source
In order to build Moonshot you should build and install its components in the given order (as they depend on each other).
git clone https://github.com/janetuk/libradsec.git
git clone https://github.com/janetuk/moonshot-ui.git
git clone https://github.com/janetuk/mech_eap.git
# Make install does not install everything in the right place, so a couple of adjustments are required
ln -s /usr/local/lib/gss/ /usr/lib/x86_64-linux-gnu/
cp ./mech_eap/mech /etc/gss/mech.d/moonshot.conf
git clone https://github.com/janetuk/trust_router.git
git clone https://github.com/janetuk/freeradius.git
Building Moonshot binary packages from source
Instead of building and installing from source, you can build Debian binary packages from source. This method is preferred over the previous one unless you want to actively develop some of the Moonshot modules, since it will install all the files in the right location (eg. libraries, systemd units...) as well performing the pre and post install operations.
The installation order is the same as described in the previous section. The process is identical for all the modules. In the instructions, we use the variable
$MODULE_NAME to refer to a module's name.
git clone https://github.com/janetuk/$MODULE_NAME.git
debuild -us -uc
# Note: packages are generated in ..
dpkg -i ../*.deb