Difference between revisions of "Linux Install"

From PyMOLWiki
Jump to navigation Jump to search
(libnetcdf)
(33 intermediate revisions by 5 users not shown)
Line 1: Line 1:
This page describes how to install open-source PyMOL on Linux.
+
This page describes how to install PyMOL on Linux.
  
== Install distribution specific binary package ==
+
== Incentive PyMOL ==
 +
 
 +
[http://www.schrodinger.com Schrödinger] provides pre-compiled (64 bit) PyMOL to paying sponsors. The bundle also includes ready-to-use [[APBS]], [[morph|RigiMOL]], an MPEG encoder for movie export, and a small molecule energy minimization engine.
 +
 
 +
Download: https://pymol.org/
 +
 
 +
== Open-Source PyMOL in Linux Distros ==
  
 
Many Linux distributions provide binary packages for open-source PyMOL. They often do not provide the latest version, but if the provided package fits your needs this is the most convenient way to install PyMOL.
 
Many Linux distributions provide binary packages for open-source PyMOL. They often do not provide the latest version, but if the provided package fits your needs this is the most convenient way to install PyMOL.
  
Command line install examples for some popular distributions:
+
Command line install examples for some popular distributions (note that all of these commands must be run as root or superuser):
  
 
<source lang="bash">
 
<source lang="bash">
 +
# Arch/Manjaro
 +
pacman -S pymol
 +
 +
# CentOS with EPEL
 +
rpm -i http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-5.noarch.rpm
 +
yum --enablerepo=epel install pymol
 +
 
# Debian/Ubuntu/Mint
 
# Debian/Ubuntu/Mint
sudo apt-get install pymol
+
apt-get install pymol
  
 
# Fedora
 
# Fedora
su -c 'yum install pymol'
+
dnf install pymol
  
 
# Gentoo
 
# Gentoo
su -c 'emerge -av pymol'
+
emerge -av pymol
  
 
# openSUSE (12.1 and later)
 
# openSUSE (12.1 and later)
sudo zypper install pymol
+
zypper install pymol
  
# CentOS with EPEL
+
# Sabayon
rpm -i http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-5.noarch.rpm
+
equo i -av pymol
su -c 'yum --enablerepo=epel install pymol'
 
 
</source>
 
</source>
  
Line 28: Line 40:
  
 
Installation from source gives you the latest version and is the generic way to install PyMOL.
 
Installation from source gives you the latest version and is the generic way to install PyMOL.
 +
 +
Please also consult the [https://github.com/schrodinger/pymol-open-source/blob/master/INSTALL INSTALL] file.
  
 
=== Requirements ===
 
=== Requirements ===
Line 34: Line 48:
 
required:
 
required:
  
* [http://subversion.apache.org/ Subversion] to download the source code
+
* C++11 compiler (e.g. GCC 4.7 or higher)
 
* [http://www.python.org/ Python] (with distutils)
 
* [http://www.python.org/ Python] (with distutils)
* [http://pmw.sf.net Pmw] (Python Megawidgets)
+
* [https://github.com/schrodinger/pmw-patched Pmw] (Python Megawidgets, optional, for legacy GUI/plugins)
 
* OpenGL driver (I use [http://www.nvidia.com/object/unix.html NVidia])
 
* OpenGL driver (I use [http://www.nvidia.com/object/unix.html NVidia])
 +
* GLEW
 +
* GLUT/freeglut (optional, enable with <code>--glut</code>)
 
* libpng
 
* libpng
 
* freetype
 
* freetype
 +
* libxml2 (optional, for COLLADA export, disable with <code>--no-libxml</code>)
 +
* [https://github.com/msgpack/msgpack-c msgpack-c] 2.1.5+ (optional, for fast [http://mmtf.rcsb.org/ MMTF] loading, new in SVN r4167, disable with <code>--use-msgpackc=no</code>)
 +
* PyQt5, PyQt4, or PySide (optional, will fall back to Tk interface if compiled with <code>--glut</code>)
 +
* [https://glm.g-truc.net/ glm]
 +
* [https://github.com/rcsb/mmtf-cpp mmtf-cpp] (optional, for [http://mmtf.rcsb.org/ MMTF] export, disable with <code>--use-msgpackc=no</code>)
 +
* libnetcdf (optional, disable with <code>--no-vmd-plugins</code>)
  
On many Linux systems, one of the following commands installs all requirements:
+
On many Linux systems, one of the following commands installs all requirements (and must be run as root):
  
 
<source lang="bash">
 
<source lang="bash">
 
# Debian/Ubuntu/Mint
 
# Debian/Ubuntu/Mint
sudo apt-get install subversion build-essential python-dev python-pmw \
+
apt-get install build-essential python-dev python-pmw libglew-dev \
   libglew-dev freeglut3-dev libpng-dev libfreetype6-dev
+
   freeglut3-dev libpng-dev libfreetype6-dev libxml2-dev \
 +
  libmsgpack-dev python-pyqt5.qtopengl libglm-dev libnetcdf-dev
  
# Fedora/CentOS
+
# CentOS
su -c 'yum install subversion python-devel freeglut-devel freetype-devel tkinter python-pmw'
+
yum install gcc gcc-c++ kernel-devel python-devel tkinter python-pmw glew-devel \
 +
  freeglut-devel libpng-devel freetype-devel libxml2-devel glm-devel
 +
 
 +
# Fedora
 +
dnf install gcc gcc-c++ kernel-devel python3-devel glew-devel PyQt5 msgpack-devel \
 +
  freeglut-devel libpng-devel freetype-devel libxml2-devel glm-devel
  
 
# Gentoo
 
# Gentoo
sudo -c 'emerge -av dev-vcs/subversion dev-lang/python dev-python/pmw media-libs/glew \
+
emerge -av dev-lang/python dev-python/pmw media-libs/glew \
   media-libs/freeglut media-libs/libpng media-libs/freetype'
+
   media-libs/freeglut media-libs/libpng media-libs/freetype media-libs/glm
  
 
# openSUSE
 
# openSUSE
sudo zypper install python-devel freeglut-devel gcc-c++ glew-devel libpng-devel python-pmw subversion
+
zypper install python-devel freeglut-devel gcc-c++ glew-devel libpng-devel python-pmw glm
 +
 
 +
# Sabayon
 +
equo i -av dev-lang/python dev-python/pmw media-libs/glew \
 +
  media-libs/freeglut media-libs/libpng media-libs/freetype
 
</source>
 
</source>
  
=== Get latest source from SVN ===
+
=== Get latest source from Git ===
 
 
This will download the latest source to '''/tmp/pymol''':
 
  
 
<source lang="bash">
 
<source lang="bash">
cd /tmp
+
git clone https://github.com/schrodinger/pymol-open-source.git
svn co https://pymol.svn.sourceforge.net/svnroot/pymol/trunk/pymol pymol
+
cd pymol-open-source
cd pymol
 
 
</source>
 
</source>
 +
 +
=== Libraries in non-standard places ===
 +
 +
Optional: You may use the colon-delimited <code>$PREFIX_PATH</code> variable to point <code>setup.py</code> to non-standard locations of libraries and headers (those locations should have <code>include</code> and <code>lib</code> directories).
  
 
=== Compile and install ===
 
=== Compile and install ===
  
This will install PyMOL as normal user into '''/opt/pymol-svn'''. If you don't have write permissions to '''/opt''', change the <code>prefix</code> variable to something like '''$HOME/pymol-svn'''.
+
This will install PyMOL as normal user into <code>$HOME/pymol-open-source-build</code>.
  
 
<source lang="bash">
 
<source lang="bash">
 
#!/bin/bash -e
 
#!/bin/bash -e
  
prefix=/opt/pymol-svn
+
prefix=$HOME/pymol-open-source-build
modules=$prefix/modules
+
 
 +
# Example for dependencies in non-standard places
 +
# export PREFIX_PATH="$HOME/extra/glew-2.0.0:$HOME/extra/libpng-1.6.5:/opt/local"
  
 
python setup.py build install \
 
python setup.py build install \
     --home=$prefix \
+
     --home=$prefix
    --install-purelib=$modules \
 
    --install-platlib=$modules
 
 
 
export PYTHONPATH=$modules:$PYTHONPATH
 
python setup2.py install
 
install pymol $prefix/
 
 
</source>
 
</source>
  
Now launch PyMOL like this (you may copy this launcher into your '''$PATH''',
+
Now launch PyMOL like this:
like to '''/usr/local/bin'''):
 
  
 
<source lang="bash">
 
<source lang="bash">
/opt/pymol-svn/pymol
+
$HOME/pymol-open-source-build/bin/pymol
 
</source>
 
</source>
  
 
=== Troubleshooting ===
 
=== Troubleshooting ===
  
* On Linux Mint 11 there have been reports of gcc-4.5 breaking Pymol. You could use gcc-4.4 instead. (reported by [[User:Tlinnet]])
+
* Do do a "clean" build, remove the "build" directory (sometimes necessary if "git pull" changed header files)
<source lang="bash">
 
sudo apt-get install build-essential gcc-4.4 g++-4.4
 
export CC=/usr/bin/gcc-4.4
 
</source>
 
 
 
* If you get an error message "ImportError: No module named Pmw" and lack half of the user interface, then run the additional command
 
<source lang="bash">
 
python setup2.py install pmw
 
</source>
 
to install a copy of the Python MegaWidgets.
 
 
 
* If you're using Ubuntu 11.10 with an Intel Sandy Bridge video card and get graphics oddities. Please see [https://launchpad.net/~glasen/+archive/intel-driver Intel Driver Post for Ubuntu].
 
 
 
== Ubuntu/Mint 12 compile and install with MPEG support ==
 
First install dependencies.
 
<source lang="bash">
 
sudo apt-get install subversion git
 
sudo apt-get install python-imaging python-pygame apbs
 
sudo apt-get install build-essential python-dev python-pmw libglew-dev freeglut3-dev libpng-dev libfreetype6-dev
 
bash installpymol.sh
 
</source>
 
 
 
== Red Hat Enterprise Linux RHEL 6 compile and install with MPEG support for x86_64 bit ==
 
Install the EPEL repository: The .rpm will be download from here <br>
 
http://fedoraproject.org/wiki/EPEL <br>
 
And the CentOS repository for additional .rpm are located here <br>
 
http://mirror.centos.org/centos/6/os/x86_64/Packages/ <br>
 
<source lang="bash">
 
bash
 
cd && wget http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-5.noarch.rpm
 
sudo rpm -i epel-release-6-5.noarch.rpm
 
rm epel-release-6-5.noarch.rpm</pre>
 
</source>
 
Then add Centos repository
 
<source lang="bash">
 
rpm --import http://mirror.centos.org/centos/6/os/x86_64/RPM-GPG-KEY-CentOS-6
 
sudo gedit /etc/yum.repos.d/centos.repo
 
</source>
 
  
Write these lines.
+
* If you are using Ubuntu with a NVIDIA graphic card and generic drivers you may experience bad rendering, black pixelation and other graphical oddities. A guide to installing NVIDIA proprietary drivers can be found under [https://help.ubuntu.com/community/BinaryDriverHowto/Nvidia Ubuntu community Nvidia Drivers How To]
<source lang="text">
 
[centos]
 
name=Centos for RHEL/ CentOS $releasever - $basearch
 
baseurl=http://mirror.centos.org/centos/6/os/x86_64
 
enabled=1
 
</source>
 
Then check configuration. Do NOT UPGRADE PACKAGES from CentOS. It will replace RHEL packages. <br>
 
If you do upgrade packages, you will now see Centos login and such, but not much is problematic.
 
<source lang="bash">
 
sudo yum repolist all
 
sudo yum install subversion git
 
sudo yum install python-imaging pygame apbs
 
sudo yum install gcc-c++ python-devel python-pmw glew-devel freeglut-devel libpng-devel freetype-devel
 
</source>
 
Then disable centos repository. Set '''enabled=0'''
 
<source lang="bash">
 
sudo gedit /etc/yum.repos.d/centos.repo
 
</source>
 
Now install pymol
 
<source lang="bash">
 
bash installpymol.sh
 
</source>
 
Make sure, that you will have '''~/bin''' as part of your path
 
<source lang="bash">
 
gedit ~/.cshrc
 
</source>
 
Make sure this lines is in the file. Only if you use tcsh shell.
 
<source lang="text">
 
setenv PATH ${PATH}:{$HOME}/bin
 
</source>
 
  
== Install script ==
+
== Customized Installations ==
Make a text file "installpymol.sh" and make it executable
 
<source lang="bash">
 
chmod u+x installpymol.sh
 
</source>
 
 
 
Put this in the file, modify the first line
 
<source lang="bash">
 
#!/bin/bash -e
 
pymoldir=$HOME/software/pymol
 
modules=$pymoldir/modules
 
svnpymol=svnpymol
 
svnfreemol=svnfreemol
 
pymolplugins=pymolplugins
 
pymolscriptrepo=Pymol-script-repo
 
 
###################################################
 
[ -d $pymoldir ] || mkdir -p $pymoldir
 
[ -d $HOME/bin ] || mkdir $HOME/bin
 
 
###### Checkout pymol svn
 
svn co https://pymol.svn.sourceforge.net/svnroot/pymol/trunk/pymol $pymoldir/$svnpymol
 
###### Build and install pymol
 
cd $pymoldir/$svnpymol
 
python setup.py build install --home=$pymoldir --install-purelib=$modules --install-platlib=$modules
 
export PYTHONPATH=$modules:$PYTHONPATH
 
python setup2.py install
 
install pymol $pymoldir/
 
 
########## Setup freemol - for MPEG support ############
 
svn co svn://bioinformatics.org/svnroot/freemol/trunk $pymoldir/$svnfreemol
 
cd $pymoldir/$svnfreemol/src/mpeg_encode
 
export FREEMOL=$pymoldir/$svnfreemol/freemol
 
./configure
 
make
 
make install
 
 
 
########## Install PluginArchitecture ############
 
git clone https://github.com/speleo3/pymolplugins.git $pymoldir/$pymolplugins
 
########## Install Pymol-script-repo ############
 
git clone git://github.com/Pymol-Scripts/Pymol-script-repo.git $pymoldir/$pymolscriptrepo
 
 
 
## Make a shortcut to an extended pymol execution
 
echo "#!/bin/bash" >> $pymoldir/pymolMPEG.sh
 
echo "if [ ! -f $HOME/.local/share/applications/pymolsvn.desktop ];" >> $pymoldir/pymolMPEG.sh
 
echo "then" >> $pymoldir/pymolMPEG.sh
 
echo "ln -s $pymoldir/pymolsvn.desktop $HOME/.local/share/applications/pymolsvn.desktop" >> $pymoldir/pymolMPEG.sh
 
echo "fi" >> $pymoldir/pymolMPEG.sh
 
echo "export FREEMOL=$pymoldir/$svnfreemol/freemol" >> $pymoldir/pymolMPEG.sh
 
echo "export PYMOL_GIT_MOD=$pymoldir/$pymolscriptrepo/modules" >> $pymoldir/pymolMPEG.sh
 
echo '#export PYTHONPATH=$PYTHONPATH:/path/to/shared/python/site-packages/PIL' >> $pymoldir/pymolMPEG.sh
 
echo '#export PYTHONPATH=$PYTHONPATH:/path/to/shared/python/site-packages/lib-dynload' >> $pymoldir/pymolMPEG.sh
 
echo "export PYTHONPATH=$pymoldir"':$PYTHONPATH' >> $pymoldir/pymolMPEG.sh
 
echo "export PYTHONPATH=$pymoldir/$pymolscriptrepo/modules"':$PYTHONPATH' >> $pymoldir/pymolMPEG.sh
 
echo "export PYTHONPATH=$pymoldir/$pymolscriptrepo"':$PYTHONPATH' >> $pymoldir/pymolMPEG.sh
 
echo "export PYMOL_PATH=$modules/pymol/pymol_path" >> $pymoldir/pymolMPEG.sh
 
echo '#export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/path/to/shared/lib/pymollib' >> $pymoldir/pymolMPEG.sh
 
echo '#export LIBGL_ALWAYS_INDIRECT=no' >> $pymoldir/pymolMPEG.sh
 
tail -n +2 $pymoldir/pymol >> $pymoldir/pymolMPEG.sh
 
chmod u+x $pymoldir/pymolMPEG.sh
 
 
## Make a link, so we execute pymol with the freemol env exported
 
ln -s $pymoldir/pymolMPEG.sh $HOME/bin/pymol
 
 
 
## Make a pymolsvn.desktop
 
echo "#!/bin/env xdg-open" >> $pymoldir/pymolsvn.desktop
 
echo "[Desktop Entry]" >> $pymoldir/pymolsvn.desktop
 
echo "Version=1.5.x" >> $pymoldir/pymolsvn.desktop
 
echo "Name=PyMOL Molecular Graphics System - Open source" >> $pymoldir/pymolsvn.desktop
 
echo "GenericName=Molecular Modeller" >> $pymoldir/pymolsvn.desktop
 
echo "Comment=Model molecular structures and produce high-quality images of them" >> $pymoldir/pymolsvn.desktop
 
echo "Type=Application" >> $pymoldir/pymolsvn.desktop
 
echo "Exec=env $pymoldir/pymolMPEG.sh" >> $pymoldir/pymolsvn.desktop
 
echo "Icon=$pymoldir/$pymolscriptrepo/files_for_examples/pymol.xpm" >> $pymoldir/pymolsvn.desktop
 
echo "MimeType=chemical/x-pdb" >> $pymoldir/pymolsvn.desktop
 
echo "Categories=Education;Science;Chemistry;" >> $pymoldir/pymolsvn.desktop
 
echo "Terminal=false" >> $pymoldir/pymolsvn.desktop
 
 
 
## Make a startup files, which is always executed on startup.
 
t="'"
 
echo "import sys,os" >> $modules/pymol/pymol_path/run_on_startup.py
 
echo "import $pymolplugins" >> $modules/pymol/pymol_path/run_on_startup.py
 
echo "pymolplugins.preferences = {'instantsave': False, 'verbose': False}" >> $modules/pymol/pymol_path/run_on_startup.py
 
echo "pymolplugins.autoload = {'apbs_tools': False}" >> $modules/pymol/pymol_path/run_on_startup.py
 
echo "pymolplugins.set_startup_path( [$t$pymoldir/$pymolscriptrepo/plugins$t,$t$modules/pmg_tk/startup$t] )" >> $modules/pymol/pymol_path/run_on_startup.py
 
echo "pymolplugins.preferences = {'instantsave': True, 'verbose': False}" >> $modules/pymol/pymol_path/run_on_startup.py
 
echo "pymolplugins.preferences['instantsave'] = True" >> $modules/pymol/pymol_path/run_on_startup.py
 
</source>
 
 
 
=== Change MPEG settings ===
 
Change settings in
 
<source lang="bash">
 
$HOME/Software/pymol/svnfreemol/freemol/libpy/freemol/mpeg_encode.py
 
</source>
 
For example, change in line 205:<br>
 
FRAME_RATE 24<br>
 
(Note, only legal values is allowed: 23.976, 24, 25, 29.97, 30, 50 ,59.94, 60)
 
  
Then restart PyMOL.
+
* [[User:Tlinnet/Linux_Install|Troels Linnet's installations scripts]]: Detailed installation scripts for Ubuntu, Mint 12 and RHEL 6, including MPEG support from FREEMOL
  
 
[[Category:Installation|Linux Installation]]
 
[[Category:Installation|Linux Installation]]

Revision as of 04:04, 3 December 2019

This page describes how to install PyMOL on Linux.

Incentive PyMOL

Schrödinger provides pre-compiled (64 bit) PyMOL to paying sponsors. The bundle also includes ready-to-use APBS, RigiMOL, an MPEG encoder for movie export, and a small molecule energy minimization engine.

Download: https://pymol.org/

Open-Source PyMOL in Linux Distros

Many Linux distributions provide binary packages for open-source PyMOL. They often do not provide the latest version, but if the provided package fits your needs this is the most convenient way to install PyMOL.

Command line install examples for some popular distributions (note that all of these commands must be run as root or superuser):

# Arch/Manjaro
pacman -S pymol

# CentOS with EPEL
rpm -i http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-5.noarch.rpm
yum --enablerepo=epel install pymol

# Debian/Ubuntu/Mint
apt-get install pymol

# Fedora
dnf install pymol

# Gentoo
emerge -av pymol

# openSUSE (12.1 and later)
zypper install pymol

# Sabayon
equo i -av pymol

Install from source

Installation from source gives you the latest version and is the generic way to install PyMOL.

Please also consult the INSTALL file.

Requirements

Libraries as well as development files (headers) of the following software is required:

  • C++11 compiler (e.g. GCC 4.7 or higher)
  • Python (with distutils)
  • Pmw (Python Megawidgets, optional, for legacy GUI/plugins)
  • OpenGL driver (I use NVidia)
  • GLEW
  • GLUT/freeglut (optional, enable with --glut)
  • libpng
  • freetype
  • libxml2 (optional, for COLLADA export, disable with --no-libxml)
  • msgpack-c 2.1.5+ (optional, for fast MMTF loading, new in SVN r4167, disable with --use-msgpackc=no)
  • PyQt5, PyQt4, or PySide (optional, will fall back to Tk interface if compiled with --glut)
  • glm
  • mmtf-cpp (optional, for MMTF export, disable with --use-msgpackc=no)
  • libnetcdf (optional, disable with --no-vmd-plugins)

On many Linux systems, one of the following commands installs all requirements (and must be run as root):

# Debian/Ubuntu/Mint
apt-get install build-essential python-dev python-pmw libglew-dev \
  freeglut3-dev libpng-dev libfreetype6-dev libxml2-dev \
  libmsgpack-dev python-pyqt5.qtopengl libglm-dev libnetcdf-dev

# CentOS
yum install gcc gcc-c++ kernel-devel python-devel tkinter python-pmw glew-devel \
  freeglut-devel libpng-devel freetype-devel libxml2-devel glm-devel

# Fedora
dnf install gcc gcc-c++ kernel-devel python3-devel glew-devel PyQt5 msgpack-devel \
  freeglut-devel libpng-devel freetype-devel libxml2-devel glm-devel

# Gentoo
emerge -av dev-lang/python dev-python/pmw media-libs/glew \
  media-libs/freeglut media-libs/libpng media-libs/freetype media-libs/glm

# openSUSE
zypper install python-devel freeglut-devel gcc-c++ glew-devel libpng-devel python-pmw glm

# Sabayon
equo i -av dev-lang/python dev-python/pmw media-libs/glew \
  media-libs/freeglut media-libs/libpng media-libs/freetype

Get latest source from Git

git clone https://github.com/schrodinger/pymol-open-source.git
cd pymol-open-source

Libraries in non-standard places

Optional: You may use the colon-delimited $PREFIX_PATH variable to point setup.py to non-standard locations of libraries and headers (those locations should have include and lib directories).

Compile and install

This will install PyMOL as normal user into $HOME/pymol-open-source-build.

#!/bin/bash -e

prefix=$HOME/pymol-open-source-build

# Example for dependencies in non-standard places
# export PREFIX_PATH="$HOME/extra/glew-2.0.0:$HOME/extra/libpng-1.6.5:/opt/local"

python setup.py build install \
    --home=$prefix

Now launch PyMOL like this:

$HOME/pymol-open-source-build/bin/pymol

Troubleshooting

  • Do do a "clean" build, remove the "build" directory (sometimes necessary if "git pull" changed header files)
  • If you are using Ubuntu with a NVIDIA graphic card and generic drivers you may experience bad rendering, black pixelation and other graphical oddities. A guide to installing NVIDIA proprietary drivers can be found under Ubuntu community Nvidia Drivers How To

Customized Installations