1.2. Download and installation from source on Linux (Fedora and Ubuntu)¶
1.2.1. Disclaimer¶
HORTON has been tested on Fedora and Ubuntu Linux. If you are running another Linux distribution, some of the instructions below may not work.
1.2.2. Packaged dependencies for building, installing and testing HORTON¶
In order to compile and test HORTON, you need to install relatively recent versions of the following programs/libraries:
- GCC, G++ and GFortran >=4.9: http://gcc.gnu.org (In principle the Intel compilers or any other combination of C++11 and Fortran compiler should work. The GNU compilers are used for development and testing.)
- Python >=2.7,<3.0: http://www.python.org/ (Also install development files.)
- Nosetests >=1.1.2: http://readthedocs.org/docs/nose/en/latest/
- NumPy >=1.9.1: http://www.numpy.org/
- SciPy >=0.11.0: http://www.scipy.org/
- Cython >=0.17.1: http://www.cython.org/
- H5Py >=2.2.1: http://www.h5py.org/
- Matplotlib >=1.0: http://matplotlib.org/
- LibXC ==2.2.2: http://www.tddft.org/programs/octopus/wiki/index.php/Libxc (Also install development files.)
- LibInt ==2.0.3: http://sourceforge.net/p/libint/home (Also install development files.)
- Curl >=7.0: http://curl.haxx.se/
- PIP >=7.0: https://pip.pypa.io/ (Not required in some scenarios but never bad to have.)
With popular Linux distributions, most of these dependencies can be installed with a package manager:
Ubuntu Linux 16.04:
sudo apt-get install gcc g++ gfortran python-dev python-nose python-scipy cython \ python-h5py python-matplotlib libxc-dev curl \ python-pip
Note that Ubuntu 16.04 does not have up-to-date packages for all dependencies. LibInt2 must be compiled manually as explained in From-source dependencies for building, installing and testing HORTON. (The beta version of LibInt2 that comes with Ubuntu 16.04 is compiled with a too low LIBINT2_MAX_AM_ERI value.)
Ubuntu Linux 15.04 and 14.04:
sudo apt-get install gcc g++ gfortran python-dev python-nose python-scipy cython \ python-h5py python-matplotlib libxc-dev curl \ python-pip pip install --user --upgrade numpy
Note that Ubuntu 15.04 and 14.04 do not have up-to-date packages for all dependencies. Hence, some are installed with PIP. LibInt2 must be compiled manually as explained in From-source dependencies for building, installing and testing HORTON.
Fedora Linux 25 and up:
sudo dnf install gcc gcc-c++ gcc-gfortran redhat-rpm-config python-devel \ python-nose python2-numpy python2-scipy \ Cython python2-h5py python2-matplotlib \ libint2-devel curl python-pip
Note that since release 25, Fedora comes with LibXC-3.x, which we do not support yet in the current version of HORTON. Hence, you have to install LibXC-2.2.2 manually as explained in From-source dependencies for building, installing and testing HORTON.
Fedora Linux 24:
sudo dnf install gcc gcc-c++ gcc-gfortran redhat-rpm-config python-devel \ python-nose python2-numpy python2-scipy \ Cython python2-h5py python2-matplotlib \ libxc-devel libint2-devel curl python-pip
Fedora Linux 22 and 23:
sudo dnf install gcc gcc-c++ gcc-gfortran redhat-rpm-config python-devel \ python-nose numpy scipy Cython h5py \ python-matplotlib libxc-devel libint2-devel \ curl python-pip
1.2.3. Download HORTON¶
The latest stable source code release of HORTON can be downloaded here:
Choose a suitable directory, e.g. ~/build
, download and unpack the archive
mkdir -p ~/build
cd ~/build
curl -kfLO https://github.com/theochem/horton/releases/download/2.1.0/horton-2.1.0.tar.gz
curl -kfLO https://github.com/theochem/horton/releases/download/2.1.0/horton-2.1.0.tar.gz.md5
md5sum horton-2.1.0.tar.gz | diff - horton-2.1.0.tar.gz.md5 -q || rm -fv horton-2.1.0.tar.gz
tar -xvzf horton-2.1.0.tar.gz
cd horton-2.1.0
The commands above will also check the integrity of the downloaded file. If the download failed, the partial or broken download will be removed. In case of faillure, it is usually sufficient just to retry.
1.2.4. From-source dependencies for building, installing and testing HORTON¶
If the package manager of your Linux distribution does not have the desired packages (or the right versions), you have to install them manually, e.g. download and execute an installer, or download and unpack a binary package. On HPC environments a compilation from scratch is recommended.
LibXC
The directory tools/qa
of the HORTON source tree contains scripts to download and
build LibXC, which will work on most systems:
./tools/qa/install_libxc-2.2.2.sh
This results in a LibXC library suitable for compiling HORTON. If this fails, consult your local Linux guru to build LibXC. If you decided to make a custom compilation of LibXC, keep in mind that it is not reliable when using aggressive compiler optimization flags. For more info about LibXC, check the website: http://www.tddft.org/programs/octopus/wiki/index.php/Libxc
LibInt2
The directory tools/qa
of the HORTON source tree contains scripts to download and
build LibInt2, which will work on most systems:
./tools/qa/install_libint-2.0.3.sh
The compilation of LibInt2 takes a few minutes and results in a library suitable for compiling HORTON. If this fails, consult your local Linux guru to build LibInt2. For more info about LibInt2, check the website: https://github.com/evaleev/libint
Python dependencies
In some cases, PIP, the Python package manager, may be a good choice to install the most recent versions of the Python packages in the list of dependencies. Examples are given above for Ubuntu and Fedora.
1.2.5. Build and Install HORTON¶
The regular build and install is done as follows:
./setup.py install --user
The setup.py
script makes a reasonable attempt at configuring the compiler and
linker settings for the LibXC and LibInt2 libraries. However, this does not work in all
environments. In case of a failure, or if a configuration other than the default is
desired, read Controlling dynamic/static linking against LibXC and LibInt2.
1.2.6. Runtime configuration¶
You need to set the following variable in ~/.bashrc
to use HORTON:
export PATH=${HOME}/.local/bin:${PATH}
# If you used special link options for LibXC or LibInt2, something along
# the following lines may also be needed:
# export LD_LIBRARY_PATH=some_dir/with/shared_objects/${LD_LIBRARY_PATH}
If you run HORTON on a headless node, i.e. without an X server, you need to
configure Matplotlib to use a backend that does not require a graphical user
interface. (See http://matplotlib.org/faq/usage_faq.html#what-is-a-backend for
more details on the Matplotlib backends.) This can be done by adding the
following line to your matplotlibrc
file:
backend: agg
This file is located in either ${HOME}/.matplotlib
or
${HOME}/.config/matplotlib
.
1.2.7. Test HORTON¶
To test if HORTON was installed properly and if it can be accessed from any directory, you should change to a directory outside of the source tree and call nosetests as follows:
(cd ~; nosetests -v horton)