Differences between revisions 11 and 56 (spanning 45 versions)
Revision 11 as of 2010-06-18 17:59:53
Size: 9194
Editor: SteveLudtke
Comment:
Revision 56 as of 2016-10-26 19:01:43
Size: 17012
Editor: SteveLudtke
Comment:
Deletions are marked like this. Additions are marked like this.
Line 1: Line 1:
= Compiling EMAN2 on Linux System =

||<35%><<TableOfContents>>||
= Compiling EMAN2 on Linux System FROM SOURCE =
||<35%><<TableOfContents>> ||
Line 7: Line 6:
=== Ubuntu 10.04 (and 9.x for the most part) ===
This is one of the best EMAN2 development platforms, and what I use now. All of the dependencies can be installed with the
package manager and work fine. You will need:

''libhdf5-serial libhdf5-serial-dev lipng12 libpng12-dev libjpeg62 libjpeg62-dev libtiff4 libtiff4-dev python-qt4 python-qt4-gl python-opengl python-matplotlib libfftw3 libfftw3-dev libgsl0-dev db4.8-util libdb4.8 python-bsddb3 cmake cmake-curses-gui ipython''

(and all of the dependencies it wants to install as a consequence)
=== Arch Linux ===
Arch is an extremely flexible Linux variant, which doesn't have release versions, but instead updates packages continuously over time. It is not for newbies, but for experts, it is an excellent choice.

Arch now uses Python3 by default rather than Python2. All of the EMAN scripts look for 'python'. So you need to arrange that in your account 'python' launches Python2 (by making a link, etc).

Install dependencies:
{{{
pacman -S python2-numpy hdf5 fftw boost libtiff libpng cmake gsl ftgl python2-matplotlib ipython qt4 python2-pyqt4 python2-opengl
}}}

=== Ubuntu and Kubuntu ===
This is one of the best EMAN2 development platforms, and what I use now, though I use Kubuntu due to its improved desktop and Qt integration (Gnome has become irritating recently). One of the best things about this distribution is that ALL of the dependencies are available from the package manager. However, with recent ubuntu releases, I suggest installing 'synaptic' and using that in preference to the current default package managers, which don't find development packages very readily. It is possible that we've missed something in the list of dependencies below, so please let us know if something is still broken.

==== 15.04 (Kubuntu) ====

Install the following (you can just use ''apt-get install''):
libhdf5-8 libhdf5-dev libpng12-0 libpng12-dev libtiff5 libtiff5-dev python-qt4 python-qt4-gl python-opengl python-matplotlib libfftw3-3 libfftw3-dev libgsl0-dev db-util libdb-dev python-bsddb3 libboost-all-dev python-dev cmake cmake-curses-gui ipython libgl1-mesa-dev libglu1-mesa-dev libftgl2 libftgl-dev

==== 13.04 - 14.04 ====

Install the following (you can just use ''apt-get install''):
''libhdf5-7 libhdf5-dev libpng12-0 libpng12-dev libtiff4 libtiff4-dev python-qt4 python-qt4-gl python-opengl python-matplotlib libfftw3-3 libfftw3-dev libgsl0-dev db-util libdb-dev python-bsddb3 libboost-all-dev python-dev cmake cmake-curses-gui ipython libgl1-mesa-dev libglu1-mesa-dev libftgl2 libftgl-dev''

==== 12.10 and earlier ====
The version numbers in this list are a bit out of date, so you will need to search for the current version of each package. You will need:

''libhdf5-serial libhdf5-serial-dev libpng12 libpng12-dev libjpeg62 libjpeg62-dev libtiff4 libtiff4-dev python-qt4 python-qt4-gl python-opengl python-matplotlib libfftw3 libfftw3-dev libgsl0-dev db4.8-util libdb4.8 python-bsddb3 libboost-python1.40-dev python-dev cmake cmake-curses-gui ipython libgl1-mesa-dev libglu1-mesa-dev libftgl2 libftgl-dev''

You may also need the following (but they may already be installed):

''freeglut3 libgl1-mesa-dri libgl-mesa-glx libglu1-mesa libqt4-opengl mesa-common-dev''

Assuming you have an Nvidia based graphics card (you should):

''nvidia-current nvidia-settings''

Note that Python MUST be 2.X not 3.X. While you can install packages from the command-line with apt-get, it may be more difficult to find the right version numbers that way.
Line 16: Line 46:
Unfortunately, a lot of problems, all due to Mandriva using broken versions of various dependencies. Mandriva used to be my platform of choice, but many issues, such as the
OpenGL support in PyQt4 being broken, have lead me to stop using this distro. It is possible to make it work by recompiling your own version of many dependencies, but it
is a very painful process.
 * PyQt4 is broken on Mandriva, and you will get a message ''Cannot make invalid context current''. The only solution we have found is to install PyQt4 yourself on top of the system one.
Unfortunately, a lot of problems, all due to Mandriva using broken versions of various dependencies. Mandriva used to be my platform of choice, but many issues, such as the  OpenGL support in PyQt4 being broken, have lead me to stop using this distro. It is possible to make it work by recompiling your own version of many dependencies, but it is a very painful process.

* PyQt4 is broken on Mandriva 2009.1, and you will get a message ''Cannot make invalid context current''. The only solution we have found is to install PyQt4 yourself on top of the system one.
Line 23: Line 52:

== External Libraries ==

EMAN2 has lots of dependent libraries. To compile EMAN2 from source, you need install development packages for these external libraries. Depends on your Linux distribution, you can either install them by yum(Fedora, CentOS, RedHat), urpmi(Mandriva), yast(SuSE), synaptic/apt-get(Ubuntu). Or compile them form source code.

 * We collect all these dependent packages under this [[http://ncmi.bcm.edu/ncmi/software/counter_222/software_91/index_html|link]]. These may not be the current versions of EMAN2 dependent libraries, but they are versions we have tried to compile from source and proved works for EMAN2.

=== Fedora ===
All dependent packages can be installed in Fedora system with its package manage system, yum. This is the list of dependent packages I installed for Fedora 14 x86_64 for the default ccmake configuration. What you need install may vary depends on how may libraries pre-exists on you system. There are the compile-time dependent packages. Note that EMAN2.1 requires Python 2.7.x, so if your default system python is older than this, you will need to install a newer python in /usr/local or somesuch, and install the necessary dependencies there as well. For most people, it might be easier to simply bite the bullet and update your OS to something newer.

 * yum install fftw-devel.x86_64
 * yum install gsl-devel.x86_64
 * yum install hdf5-devel.x86_64
 * yum install python-devel.x86_64
 * yum install numpy.x86_64
 * yum install boost-devel.x86_64
 * yum install freeglut.x86_64
 * yum install ftgl-devel.x86_64 (Optional with ENABLE_FTGL in ccmake)

After compiling and installing EMAN2, we need install some run time dependent packages for EMAN2's GUI part.

 * yum install PyQt4.x86_64
 * yum install PyOpenGL.noarch
 * yum install ipython.noarch
 * yum install python-matplotlib.x86_64

=== CentOS 6 ===
On CentOS system, by default you can find all dependency libraries with yum. You need install EPEL(Extra Packages for Enterprise Linux) first. Follow the instruction on this webpage (http://fedoraproject.org/wiki/EPEL/FAQ#howtouse) to install epel. Then you can do the same thing as in Fedora system to install all dependent packages.

=== CentOS 7 ===
'''This was contributed by Jesper Karlsen, who needed to get EMAN2/SPARX working on a cluster with MPI support (updated by Steve to fix some errors )'''

'''WARNING - While CentOS 7 is a nice, stable OS, normal releases use GCC4, rather than the newer GCC5. This will reduce performace by 30-40% for EMAN2 and similar programs! Unless you have a hack to get GCC5 working on CentOS, I suggest a different distribution'''

Most of the dependencies can be installed through yum, if the EPEL repository is installed:

   sudo yum install epel-release

and then run:

{{{
sudo yum install gsl gsl-devel mesa-libGLU mesa-libGLU-devel ftgl-devel ftgl freetype freetype-devel boost-devel boost-openmpi-devel boost-python PyQt4 PyQt4-devel sip sip-devel numpy scipy hdf5-devel h5py hdf5 libtiff libtiff-devel libpng libjpeg-turbo-devel python-devel freeglut python-matplotlib fftw-libs.x86_64 fftw-libs-double.x86_64 fftw-libs-single.x86_64 fftw-devel.x86_64 python-ipython.noarch python-ipython-console.noarch PyOpenGL.noarch
}}}

I needed to get EMAN2 and sparx to run with MPI on our cluster and realized that the OpenMPI from the CentOS did not work, as it needed to be configured with the "--disable-dlopen" to work with EMAN2, which is mentioned in the wiki:

{{{
http://blake.bcm.edu/emanwiki/EMAN2/Parallel/PyDusa
}}}

The "install_mpi.py --force" option that installs the MPI support for EMAN2/Sparx and a customized version of OpenMPI, was not an option for me.
I needed OpenMPI as an RPM, since I have many other program from repository that depends on the OpenMPI package.
The Best way i my perspective was to get the latest src.rpm from OpenMPI and rebuild it with the correct flags:

{{{
rpmbuild --rebuild --define 'configure_options --disable-dlopen' openmpi-1.8.4-1.src.rpm
}}}

This rebuilds a RPM into e.g. ~/rpmbuild/RPMS/x86_64/ if you have a 64bit machine.
Install the RPM

{{{
sudo rpm -ivh --force ~/rpmbuild/RPMS/x86_64/openmpi-1.8.4-1.x86_64.rpm
}}}

Before you go a head and try to compile the PyDusa program, you need to apply the attached patch to the config file.
In CentOS 7.0 Python modules are spread in /usr/lib/python2.7 and /usr/lib64/python2.7. The patch adds the right path for NUMPY to CentOS 7.0.
For this reason it is also a good idea to add /usr/lib64/python2.7 to your PYTHONPATH.

Now compile and install EMAN2 as described at:

{{{
http://blake.bcm.edu/emanwiki/EMAN2/COMPILE_EMAN2_LINUX
}}}

Add the EMAN2 environments to your upstart script in e.g. /etc/profile.d/eman2.sh, Containing something like this:
 
{{{
export EMAN2DIR=/usr/local/EMAN2.1
export PATH=${EMAN2DIR}/bin:$PATH
export PYTHONPATH=${EMAN2DIR}/lib:${EMAN2DIR}/bin:${PYTHONPATH}
export LD_LIBRARY_PATH=${EMAN2DIR}/lib:$LD_LIBRARY_PATH
alias sparx=sx.py
}}}

Log out/in or run "source /etc/profile.d/eman2.sh"

Now you can add the EMAN2/Sparx MPI support by following the description here:
{{{
http://blake.bcm.edu/emanwiki/EMAN2/Parallel/PyDusa
}}}
Hopefully you should have a fully functioning EMAN2/Sparx installation with MPI support by now.

This method gives a very clean environment. Where you do not have contamination of "foreign" environment and library files, which could give you a lot of grief.
Line 33: Line 141:
All of these libraries can be installed

The following libraries are required for EMAN2 installation (the libraries should be installed as shared-object libraries where applicable):
 1. fftw (version 2.1.3+) (http://www.fftw.org/)
 To install fftw from source use either configure option:
 {{{
% ./configure --enable-static=no --enable-shared=yes --enable-float --enable-type-prefix}}}
 OR
 {{{
% ./configure --enable-shared=yes --enable-float}}}
 Followed by:
 {{{
% make
% make install}}}


 2. gsl (version 1.3+) (http://www.gnu.org/software/gsl/)
 {{{
If you wish to install dependencies from source within your own account or somesuch (no system administrator privileges on the cluster), you will need the following dependencies:

=== fftw ===
(version 3.x) (http://www.fftw.org/) To install fftw from source use either configure option:

 . {{{
% ./configure --enable-static=no --enable-shared=yes --enable-float --enable-type-prefix
}}}
 OR
 {{{
% ./configure --enable-shared=yes --enable-float
}}}
 Followed by:
 {{{
% make
% make install
}}}

=== gsl ===
(version 1.3+) (http://www.gnu.org/software/gsl/)

 . {{{
Line 53: Line 165:
% make install}}}

 3. Boost (version 1.32+) (http://www.boost.org)

 3.1 Installing Boost requires Boost.Jam. Executables and source code for jam can be found at the Boost website.

 Installing Boost requires the user to identify a particular toolset to use during compilation. Most UNIX systems will probably use the "gcc" toolset; visit http://www.boost.org/more/getting_started.html#Tools for a complete listing.
 {{{
% bjam "-sTOOLS=gcc" install}}}

 Header files from the Boost installation (located in the "boost" subdirectory of the Boost installation (eg. /boost_1_32_0/boost)) must now either be added to the compilers path or copied into an existing location on the path in a subdirectory /boost.

 One possibility for this might be:
 {{{
% cp -r boost /usr/include/boost}}}
  
 4. CMake (version 2.0.6+) (http://www.cmake.org)
 Executables for several platforms are available; source code can also be used for custom installations.
% make install
}}}

=== Python 2.7.x ===
If you type 'python' and the version shows anything other than 2.7.X, you will need to download and install a recent Python 2.7 release from www.python.org. Make sure that this python is before any other python in your path.

=== easy_install or pip ===
Suggest using pip, which is included with Python 2.7.9. If you already have pip or easy_install available with your Python 2.7.x distribution, then you can skip this step. Otherwise, see:

https://pip.pypa.io/en/latest/installing.html

=== Numpy ===
Try
{{{
python
import numpy
}}}

If this doesn't raise any errors, then you already have Numpy installed. If it does, try:

{{{
pip install numpy
-or-
easy_install numpy
}}}

=== ipython ===
This is required for the interactive 'e2.py' python interface. Many users will not use this, but it isn't bad to have installed.

{{{
pip install ipython
}}}

=== Boost ===
(version 1.32+) (http://www.boost.org)

Replace /usr/local with your desired target path :
{{{
bash bootstrap.sh --prefix=/usr/local
./b2 install --prefix=/usr/local
}}}

=== CMake ===
(version 2.0.6+) (http://www.cmake.org) Executables for several platforms are available; source code can also be used for custom installations.

=== hdf5 ===
Download the source code file ''hdf5-1.8.7.tar.gz'' from http://www.hdfgroup.org/ftp/HDF5/current/src/

 . {{{
% ./configure --disable-dependency-tracking --disable-static --enable-shared
make
sudo make install
}}}
Line 75: Line 221:
    * To read/write HDF5 image, use hdf5 (http://hdf.ncsa.uiuc.edu/HDF5).
   
    * To read TIFF image, use libtiff (http://www.libtiff.org)

    * To read PNG image, use PNG (http://www.libpng.org)

    For development the following libraries/programs are required (see
    Appendix A for installation help):

    * Python (version 2.2+) (http://www.python.org)
    
    * Boost Python (version 1.32+) (http://www.boost.org)
    
    * numpy (http://www.scipy.org)



= Quick Installation =
Once all the dependencies are installed, you can install the source code using cmake. Suppose you have source code eman2.tar.gz:

 1.
 {{{
 * If you wish to use any of the GUI tools, you will need Qt4, PyQt4 and PyOpenGL
 * To read TIFF image, use libtiff (http://www.libtiff.org)
 * To read PNG image, use PNG (http://www.libpng.org) For development the following libraries/programs are required (see Appendix A for installation help):


== Quick Installation ==
=== This is **STILL** part of installation "from source" ===
Once all the dependencies are installed, you can install the source code using cmake. Suppose you have source code eman2.source.tar.gz:

 1. {{{
Line 98: Line 232:
% mkdir -p EMAN2/src
% cd EMAN2/src
% gunzip eman2.tar.gz
% tar xf eman2.tar}}}
      
 2.
 {{{
% mkdir build
% cd build}}}

 3.
 {{{
% tar -zxvf eman2.source.tar.gz
}}}

 1. {{{
% cd EMAN2/src/build
}}}

 1. {{{
Line 112: Line 242:
% make install}}}
        4. Set up login shell for csh/tcsh, put the following to your .cshrc or .tcshrc file:
 {{{
% make install
}}}

1. Set up login shell for csh/tcsh, put the following to your .cshrc or .tcshrc file:
 {{{
Line 118: Line 249:
setenv LD_LIBRARY_PATH  $EMAN2DIR/lib
setenv PYTHONPATH .:$HOME/EMAN2/lib}}}

 
For bash in .bashrc add:
 {{{
setenv LD_LIBRARY_PATH $EMAN2DIR/lib:${LD_LIBRARY_PATH}
setenv PYTHONPATH $EMAN2DIR/lib:${PYTHONPATH}
}}}
 For bash in .bashrc add:
 {{{
Line 125: Line 256:
export LD_LIBRARY_PATH=$EMAN2DIR/lib
export PYTHONPATH=$PYTHONPATH:$HOME/EMAN2/lib}}}


    
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$EMAN2DIR/lib
export PYTHONPATH=$PYTHONPATH:$EMAN2DIR/lib
}}}
Line 131: Line 261:
Line 133: Line 262:
 1. Follow the first 2 steps in Quick Installation.
 2. If your libraries are not installed at the default places, set up the related environment variables:
  * fftw -> FFTWDIR
  * gsl -> GSLDIR
  * tiff -> TIFFDIR
  * png -> PNGDIR
  * hdf5 -> HDF5DIR
  * python -> PYTHON_ROOT and PYTHON_VERSION
              3.
 
{{{
% ccmake ../eman2}}}
 * Type 'c' if it asks about "CMAKE_BACKWARDS_COMPATIBILITY".
 * Make necessary changes for compilation flags.
  * Developers will probably want to set BOOST-LIBRARY to a Boost.Python object file (ex. libboost_python-gcc-1_32.so)
 * Then type 'c', and type 'g'.

 4.
 
{{{
% make
% make install}}}
                

 
1. Follow the first 2 steps in Quick Installation.
 1. If your libraries are not installed at the default places, set up the related environment variables:
  * fftw -> FFTWDIR
  * gsl -> GSLDIR
  * tiff -> TIFFDIR
  * png -> PNGDIR
  * hdf5 -> HDF5DIR
  * python -> PYTHON_ROOT and PYTHON_VERSION

 1.
{{{
% ccmake ../eman2
}}}
 1. Type 'c' if it asks about "CMAKE_BACKWARDS_COMPATIBILITY".
 1. Make necessary changes for compilation flags.
  * Developers will probably want to set BOOST-LIBRARY to a Boost.Python object file (ex. libboost_python-gcc-1_32.so)
 1. Then type 'c', and type 'g'.

 1. {{{
% make
% make install
}}}
Line 157: Line 287:
 {{{
Athlon:    ENABLE_ATHLON
Opteron(AMD64):    ENABLE_OPTERON
Mac G5:    ENABLE_G5}}}
       

 .
{{{
Athlon:                        ENABLE_ATHLON
x86_64(AMD64):                  ENABLE_X86_64
Mac G5:                        ENABLE_G5
}}}
Line 163: Line 295:
 1. Install doxygen (version 1.4.3+, http://www.doxygen.org)
 2. Install graphviz (http://www.graphviz.org/)
 3. install latex (http://www.latex-project.org/)
 4. After you have a successful EMAN2 install, i.e., you can import EMAN2 in Python,
 {{{      
 1. Install doxygen (version 1.4.3+, http://www.doxygen.org)
 1. Install graphviz (http://www.graphviz.org/)
 1. install latex (http://www.latex-project.org/)
 1. After you have a successful EMAN2 install, i.e., you can import EMAN2 in Python,
 {{{
Line 169: Line 301:
ccmake ../eman2}}}
 set ENABLE_AUTODOC to ON,
 {{{      
make 
make install}}}
 All documents will be in your EMAN2/doc directory.
ccmake ../eman2
}}}
 set ENABLE_AUTODOC to ON,
 {{{
make
make install
}}}
 All documents will be in your EMAN2/doc directory.
Line 177: Line 311:
 0. For Emacs users, please add the following line to your $HOME/.emacs:
 {{{
(setq default-tab-width 4)}}}
 1. Ensure the Boost.Python
 2. To generate new boost python wrapper, run
 {{{
% cd eman2/libpyEM
% ./create_boost_python}}}
 3
. Windows Installer:
 EMAN uses "Nullsoft Scriptable Install System" (http://nsis.sourceforge.net/) to generate the windows installer. It also uses "HM NIS Edit" (http://hmne.sourceforge.net/) as the editor.

       
 0. For Emacs users, please add the following line to your $HOME/.emacs:
 {{{
(setq default-tab-width 4)
}}}
 0. Ensure the Boost.Python
 0. Windows Installer:
 EMAN uses "Nullsoft Scriptable Install System" (http://nsis.sourceforge.net/) to generate the windows installer. It also uses "HM NIS Edit" (http://hmne.sourceforge.net/) as the editor.
Line 191: Line 320:

Line 194: Line 321:
 1. Download 'bjam' for your platform.
 2. Download boost source from http://www.boost.org. Assume the version is boost_1_32_0.
 {{{
% cd /usr/local/src; tar zxf boost_1_32_0.tar.gz; cd boost_1_32_0.}}}
 3
. Set up environment variables "PYTHON_ROOT" and "PYTHON_VERSION". For example, if your python is at /usr/bin/python then PYTHON_ROOT is "/usr". If your python version is 2.2.X, PYTHON_VERSION is '2.2'.
  a) Check your shell:    {{{
% echo $SHELL}}}
  
b) If you are using bash/zsh, do
  {{{
 1. Download 'bjam' for your platform.
 1. Download boost source from http://www.boost.org. Assume the version is boost_1_32_0.
 {{{
% cd /usr/local/src; tar zxf boost_1_32_0.tar.gz; cd boost_1_32_0.
}}}
 1
. Set up environment variables "PYTHON_ROOT" and "PYTHON_VERSION". For example, if your python is at /usr/bin/python then PYTHON_ROOT is "/usr". If your python version is 2.2.X, PYTHON_VERSION is '2.2'.
  . a) Check your shell:
  
{{{
% echo $SHELL
}}}
  
b) If you are using bash/zsh, do
  {{{
Line 205: Line 334:
% export PYTHON_ROOT=/usr}}}

  
If you are using csh/tcsh, do
  {{{
% export PYTHON_ROOT=/usr
}}}
  If you are using csh/tcsh, do
  {{{
Line 210: Line 339:
% setenv PYTHON_ROOT /usr}}}
 4. ''cd libs/python/build [didn't do this]''
 5. Run 'bjam' with your options:
 
a) linux-x86: % bjam
 
b) SGI Irix: % bjam "-sTOOLS=mipspro"
 
c) Mac OS X: % bjam "-sTOOLS=darwin"
 6. Login as root
 7.
 
{{{
% setenv PYTHON_ROOT /usr
}}}
 1. ''cd libs/python/build [didn't do this]''
 1. Run 'bjam' with your options: a) linux-x86: % bjam b) SGI Irix: % bjam "-sTOOLS=mipspro" c) Mac OS X: % bjam "-sTOOLS=darwin"
 1. Login as root
 1. {{{
Line 220: Line 346:
cd ../../..; cp -rf boost /usr/local/include}}}
cd ../../..; cp -rf boost /usr/local/include
}}}
Line 226: Line 352:
       
Line 231: Line 356:
 * Get source code numpy-1.0.1.tar.gz
 {{{

 
* Get source code numpy-1.0.1.tar.gz
 {{{
Line 234: Line 360:
% tar xf numpy-1.0.1.tar }}}
 * Login as root.
 {{{
% cd numpy-1.0.1;
% python setup.py install}}}
% tar xf numpy-1.0.1.tar
}}}
 * Login as root.
 {{{
% cd numpy-1.0.1;
% python setup.py install
}}}

== A.4. How to Install bsddb3 (instead of using bsddb come with Python) ==
Download non-encryption version of Berkeley DB (for example, db-5.1.25.NC.tar.gz) from oracle (http://www.oracle.com/technetwork/database/berkeleydb/downloads/index.html).

 . {{{
% tar xvzf db-5.1.25.NC.tar.gz
% cd db-5.1.25.NC/build_unix
% ../dist/configure --disable-static --prefix="you specify a install directory"
% make
% make install
}}}

Download Python bsddb binding (for example, bsddb3-5.1.2.tar.gz) from http://www.jcea.es/programacion/pybsddb.htm

 . {{{
% tar xvzf bsddb3-5.1.2.tar.gz
% cd bsddb3-5.1.2
% python setup.py --berkeley-db="the directory you used to install Berkeley DB" build
% python setup.py --berkeley-db="the directory you used to install Berkeley DB" install
}}}

Compiling EMAN2 on Linux System FROM SOURCE

Linux Distribution-specific comments

Arch Linux

Arch is an extremely flexible Linux variant, which doesn't have release versions, but instead updates packages continuously over time. It is not for newbies, but for experts, it is an excellent choice.

Arch now uses Python3 by default rather than Python2. All of the EMAN scripts look for 'python'. So you need to arrange that in your account 'python' launches Python2 (by making a link, etc).

Install dependencies:

pacman -S python2-numpy hdf5 fftw boost libtiff libpng cmake gsl ftgl python2-matplotlib ipython qt4 python2-pyqt4 python2-opengl

Ubuntu and Kubuntu

This is one of the best EMAN2 development platforms, and what I use now, though I use Kubuntu due to its improved desktop and Qt integration (Gnome has become irritating recently). One of the best things about this distribution is that ALL of the dependencies are available from the package manager. However, with recent ubuntu releases, I suggest installing 'synaptic' and using that in preference to the current default package managers, which don't find development packages very readily. It is possible that we've missed something in the list of dependencies below, so please let us know if something is still broken.

15.04 (Kubuntu)

Install the following (you can just use apt-get install): libhdf5-8 libhdf5-dev libpng12-0 libpng12-dev libtiff5 libtiff5-dev python-qt4 python-qt4-gl python-opengl python-matplotlib libfftw3-3 libfftw3-dev libgsl0-dev db-util libdb-dev python-bsddb3 libboost-all-dev python-dev cmake cmake-curses-gui ipython libgl1-mesa-dev libglu1-mesa-dev libftgl2 libftgl-dev

13.04 - 14.04

Install the following (you can just use apt-get install): libhdf5-7 libhdf5-dev libpng12-0 libpng12-dev libtiff4 libtiff4-dev python-qt4 python-qt4-gl python-opengl python-matplotlib libfftw3-3 libfftw3-dev libgsl0-dev db-util libdb-dev python-bsddb3 libboost-all-dev python-dev cmake cmake-curses-gui ipython libgl1-mesa-dev libglu1-mesa-dev libftgl2 libftgl-dev

12.10 and earlier

The version numbers in this list are a bit out of date, so you will need to search for the current version of each package. You will need:

libhdf5-serial libhdf5-serial-dev libpng12 libpng12-dev libjpeg62 libjpeg62-dev libtiff4 libtiff4-dev python-qt4 python-qt4-gl python-opengl python-matplotlib libfftw3 libfftw3-dev libgsl0-dev db4.8-util libdb4.8 python-bsddb3 libboost-python1.40-dev python-dev cmake cmake-curses-gui ipython libgl1-mesa-dev libglu1-mesa-dev libftgl2 libftgl-dev

You may also need the following (but they may already be installed):

freeglut3 libgl1-mesa-dri libgl-mesa-glx libglu1-mesa libqt4-opengl mesa-common-dev

Assuming you have an Nvidia based graphics card (you should):

nvidia-current nvidia-settings

Note that Python MUST be 2.X not 3.X. While you can install packages from the command-line with apt-get, it may be more difficult to find the right version numbers that way.

Mandriva 2009.0 - 2010.0

Unfortunately, a lot of problems, all due to Mandriva using broken versions of various dependencies. Mandriva used to be my platform of choice, but many issues, such as the OpenGL support in PyQt4 being broken, have lead me to stop using this distro. It is possible to make it work by recompiling your own version of many dependencies, but it is a very painful process.

  • PyQt4 is broken on Mandriva 2009.1, and you will get a message Cannot make invalid context current. The only solution we have found is to install PyQt4 yourself on top of the system one.

  • No package for bsddb3, install python-setuptools, then you can use easy_install to install bsddb3. Might be a good idea to use a newer version of BerkeleyDB as well, though this may not be strictly required.
  • Mandriva uses a broken version of the Boost libraries. You need to install a newer version. You can just put in the default /usr/local location then point to this version in ccmake.

Fedora

All dependent packages can be installed in Fedora system with its package manage system, yum. This is the list of dependent packages I installed for Fedora 14 x86_64 for the default ccmake configuration. What you need install may vary depends on how may libraries pre-exists on you system. There are the compile-time dependent packages. Note that EMAN2.1 requires Python 2.7.x, so if your default system python is older than this, you will need to install a newer python in /usr/local or somesuch, and install the necessary dependencies there as well. For most people, it might be easier to simply bite the bullet and update your OS to something newer.

  • yum install fftw-devel.x86_64
  • yum install gsl-devel.x86_64
  • yum install hdf5-devel.x86_64
  • yum install python-devel.x86_64
  • yum install numpy.x86_64
  • yum install boost-devel.x86_64
  • yum install freeglut.x86_64
  • yum install ftgl-devel.x86_64 (Optional with ENABLE_FTGL in ccmake)

After compiling and installing EMAN2, we need install some run time dependent packages for EMAN2's GUI part.

  • yum install PyQt4.x86_64

  • yum install PyOpenGL.noarch
  • yum install ipython.noarch
  • yum install python-matplotlib.x86_64

CentOS 6

On CentOS system, by default you can find all dependency libraries with yum. You need install EPEL(Extra Packages for Enterprise Linux) first. Follow the instruction on this webpage (http://fedoraproject.org/wiki/EPEL/FAQ#howtouse) to install epel. Then you can do the same thing as in Fedora system to install all dependent packages.

CentOS 7

This was contributed by Jesper Karlsen, who needed to get EMAN2/SPARX working on a cluster with MPI support (updated by Steve to fix some errors )

WARNING - While CentOS 7 is a nice, stable OS, normal releases use GCC4, rather than the newer GCC5. This will reduce performace by 30-40% for EMAN2 and similar programs! Unless you have a hack to get GCC5 working on CentOS, I suggest a different distribution

Most of the dependencies can be installed through yum, if the EPEL repository is installed:

  • sudo yum install epel-release

and then run:

sudo yum install gsl gsl-devel mesa-libGLU mesa-libGLU-devel ftgl-devel ftgl freetype freetype-devel boost-devel boost-openmpi-devel boost-python PyQt4 PyQt4-devel sip sip-devel  numpy scipy hdf5-devel h5py hdf5 libtiff libtiff-devel libpng libjpeg-turbo-devel  python-devel freeglut python-matplotlib fftw-libs.x86_64 fftw-libs-double.x86_64 fftw-libs-single.x86_64 fftw-devel.x86_64 python-ipython.noarch python-ipython-console.noarch PyOpenGL.noarch

I needed to get EMAN2 and sparx to run with MPI on our cluster and realized that the OpenMPI from the CentOS did not work, as it needed to be configured with the "--disable-dlopen" to work with EMAN2, which is mentioned in the wiki:

http://blake.bcm.edu/emanwiki/EMAN2/Parallel/PyDusa

The "install_mpi.py --force" option that installs the MPI support for EMAN2/Sparx and a customized version of OpenMPI, was not an option for me. I needed OpenMPI as an RPM, since I have many other program from repository that depends on the OpenMPI package. The Best way i my perspective was to get the latest src.rpm from OpenMPI and rebuild it with the correct flags:

rpmbuild --rebuild --define 'configure_options --disable-dlopen' openmpi-1.8.4-1.src.rpm

This rebuilds a RPM into e.g. ~/rpmbuild/RPMS/x86_64/ if you have a 64bit machine. Install the RPM

sudo rpm -ivh --force  ~/rpmbuild/RPMS/x86_64/openmpi-1.8.4-1.x86_64.rpm

Before you go a head and try to compile the PyDusa program, you need to apply the attached patch to the config file. In CentOS 7.0 Python modules are spread in /usr/lib/python2.7 and /usr/lib64/python2.7. The patch adds the right path for NUMPY to CentOS 7.0. For this reason it is also a good idea to add /usr/lib64/python2.7 to your PYTHONPATH.

Now compile and install EMAN2 as described at:

http://blake.bcm.edu/emanwiki/EMAN2/COMPILE_EMAN2_LINUX

Add the EMAN2 environments to your upstart script in e.g. /etc/profile.d/eman2.sh, Containing something like this:

export EMAN2DIR=/usr/local/EMAN2.1
export PATH=${EMAN2DIR}/bin:$PATH
export PYTHONPATH=${EMAN2DIR}/lib:${EMAN2DIR}/bin:${PYTHONPATH}
export LD_LIBRARY_PATH=${EMAN2DIR}/lib:$LD_LIBRARY_PATH
alias sparx=sx.py

Log out/in or run "source /etc/profile.d/eman2.sh"

Now you can add the EMAN2/Sparx MPI support by following the description here:

http://blake.bcm.edu/emanwiki/EMAN2/Parallel/PyDusa

Hopefully you should have a fully functioning EMAN2/Sparx installation with MPI support by now.

This method gives a very clean environment. Where you do not have contamination of "foreign" environment and library files, which could give you a lot of grief.

Required Libraries / Programs

If you wish to install dependencies from source within your own account or somesuch (no system administrator privileges on the cluster), you will need the following dependencies:

fftw

(version 3.x) (http://www.fftw.org/) To install fftw from source use either configure option:

  • % ./configure --enable-static=no --enable-shared=yes --enable-float --enable-type-prefix
    OR
    % ./configure --enable-shared=yes --enable-float
    Followed by:
    % make
    % make install

gsl

(version 1.3+) (http://www.gnu.org/software/gsl/)

  • % ./configure
    % make
    % make install

Python 2.7.x

If you type 'python' and the version shows anything other than 2.7.X, you will need to download and install a recent Python 2.7 release from www.python.org. Make sure that this python is before any other python in your path.

easy_install or pip

Suggest using pip, which is included with Python 2.7.9. If you already have pip or easy_install available with your Python 2.7.x distribution, then you can skip this step. Otherwise, see:

https://pip.pypa.io/en/latest/installing.html

Numpy

Try

python
import numpy

If this doesn't raise any errors, then you already have Numpy installed. If it does, try:

pip install numpy
-or-
easy_install numpy

ipython

This is required for the interactive 'e2.py' python interface. Many users will not use this, but it isn't bad to have installed.

pip install ipython

Boost

(version 1.32+) (http://www.boost.org)

Replace /usr/local with your desired target path :

bash bootstrap.sh --prefix=/usr/local
./b2 install --prefix=/usr/local

CMake

(version 2.0.6+) (http://www.cmake.org) Executables for several platforms are available; source code can also be used for custom installations.

hdf5

Download the source code file hdf5-1.8.7.tar.gz from http://www.hdfgroup.org/ftp/HDF5/current/src/

  • % ./configure --disable-dependency-tracking --disable-static --enable-shared
    make
    sudo make install

Optional Libraries / Programs

  • If you wish to use any of the GUI tools, you will need Qt4, PyQt4 and PyOpenGL

  • To read TIFF image, use libtiff (http://www.libtiff.org)

  • To read PNG image, use PNG (http://www.libpng.org) For development the following libraries/programs are required (see Appendix A for installation help):

Quick Installation

This is **STILL** part of installation "from source"

Once all the dependencies are installed, you can install the source code using cmake. Suppose you have source code eman2.source.tar.gz:

  1. % cd $home/username/
    % tar -zxvf eman2.source.tar.gz
  2. % cd EMAN2/src/build
  3. % cmake ../eman2
    % make
    % make install
  4. Set up login shell for csh/tcsh, put the following to your .cshrc or .tcshrc file:
    setenv EMAN2DIR $home/username/EMAN2
    setenv PATH $EMAN2DIR/bin:${PATH}
    setenv LD_LIBRARY_PATH $EMAN2DIR/lib:${LD_LIBRARY_PATH}
    setenv PYTHONPATH $EMAN2DIR/lib:${PYTHONPATH}
    For bash in .bashrc add:
    export EMAN2DIR=/home/username/EMAN2
    export PATH=$PATH:$EMAN2DIR/bin
    export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$EMAN2DIR/lib
    export PYTHONPATH=$PYTHONPATH:$EMAN2DIR/lib

Advanced Installation

If your libraries (fftw, gsl, hdf, etc) are not found by Quick Installation, or if you want to change the compilation options, the following steps help:

  1. Follow the first 2 steps in Quick Installation.
  2. If your libraries are not installed at the default places, set up the related environment variables:
    • fftw -> FFTWDIR

    • gsl -> GSLDIR

    • tiff -> TIFFDIR

    • png -> PNGDIR

    • hdf5 -> HDF5DIR

    • python -> PYTHON_ROOT and PYTHON_VERSION

  3. % ccmake ../eman2
  4. Type 'c' if it asks about "CMAKE_BACKWARDS_COMPATIBILITY".
  5. Make necessary changes for compilation flags.
    • Developers will probably want to set BOOST-LIBRARY to a Boost.Python object file (ex. libboost_python-gcc-1_32.so)
  6. Then type 'c', and type 'g'.
  7. % make
    % make install

Platform Dependent Optimization

In CMake Configuration, enable the following option for your platform:

  • Athlon:                         ENABLE_ATHLON
    x86_64(AMD64):                  ENABLE_X86_64
    Mac G5:                         ENABLE_G5

How to Generate Latest Documentation

  1. Install doxygen (version 1.4.3+, http://www.doxygen.org)

  2. Install graphviz (http://www.graphviz.org/)

  3. install latex (http://www.latex-project.org/)

  4. After you have a successful EMAN2 install, i.e., you can import EMAN2 in Python,
    cd EMAN2/src/build
    ccmake ../eman2
    set ENABLE_AUTODOC to ON,
    make
    make install
    All documents will be in your EMAN2/doc directory.

Notes For Developers

  1. For Emacs users, please add the following line to your $HOME/.emacs:
    (setq default-tab-width 4)
  2. Ensure the Boost.Python
  3. Windows Installer:

    EMAN uses "Nullsoft Scriptable Install System" (http://nsis.sourceforge.net/) to generate the windows installer. It also uses "HM NIS Edit" (http://hmne.sourceforge.net/) as the editor.

Appendix A

A.1. How to Install Boost Python

  1. Download 'bjam' for your platform.
  2. Download boost source from http://www.boost.org. Assume the version is boost_1_32_0.

    % cd /usr/local/src; tar zxf boost_1_32_0.tar.gz; cd boost_1_32_0.
  3. Set up environment variables "PYTHON_ROOT" and "PYTHON_VERSION". For example, if your python is at /usr/bin/python then PYTHON_ROOT is "/usr". If your python version is 2.2.X, PYTHON_VERSION is '2.2'.
    • a) Check your shell:
      % echo $SHELL
      b) If you are using bash/zsh, do
      % export PYTHON_VERSION=2.2
      % export PYTHON_ROOT=/usr
      If you are using csh/tcsh, do
      % setenv PYTHON_VERSION 2.2
      % setenv PYTHON_ROOT /usr
  4. cd libs/python/build [didn't do this]

  5. Run 'bjam' with your options: a) linux-x86: % bjam b) SGI Irix: % bjam "-sTOOLS=mipspro" c) Mac OS X: % bjam "-sTOOLS=darwin"
  6. Login as root
  7. cp -df bin-stage/libboost_python.so* /usr/local/lib
    cd ../../..; cp -rf boost /usr/local/include

A.2. How to use your own python version

If the python you want to use in your computer is not found by CMake, you may set up environment variables "PYTHON_ROOT" and "PYTHON_VERSION". For example, if your python is at /usr/local/python2.4/bin/python. PYTHON_ROOT is "/usr/local/python2.4". if your python is 2.4.X, PYTHON_VERSION is '2.4'.

A.3. How to Install numpy

From the website http://sourceforge.net/projects/numpy download source package.

For windows, run the binary installer and the installation is complete. Other users must download the source code and install manually as follows:

  • Get source code numpy-1.0.1.tar.gz
    % gunzip numpy-1.0.1.tar.gz
    % tar xf numpy-1.0.1.tar
  • Login as root.
    % cd numpy-1.0.1;
    % python setup.py install

A.4. How to Install bsddb3 (instead of using bsddb come with Python)

Download non-encryption version of Berkeley DB (for example, db-5.1.25.NC.tar.gz) from oracle (http://www.oracle.com/technetwork/database/berkeleydb/downloads/index.html).

  • % tar xvzf db-5.1.25.NC.tar.gz
    % cd db-5.1.25.NC/build_unix
    % ../dist/configure --disable-static --prefix="you specify a install directory"
    % make
    % make install

Download Python bsddb binding (for example, bsddb3-5.1.2.tar.gz) from http://www.jcea.es/programacion/pybsddb.htm

  • % tar xvzf bsddb3-5.1.2.tar.gz
    % cd bsddb3-5.1.2
    % python setup.py --berkeley-db="the directory you used to install Berkeley DB" build
    % python setup.py --berkeley-db="the directory you used to install Berkeley DB" install

EMAN2/COMPILE_EMAN2_LINUX (last edited 2017-06-10 01:38:42 by jgalaz)