Linux Install: Difference between revisions

From PyMOLWiki
Jump to navigation Jump to search
Line 179: Line 179:
<source lang="bash">
<source lang="bash">
#!/bin/bash -e
#!/bin/bash -e
pymoldir=$HOME/Software/pymol
pymoldir=$HOME/software/pymol
modules=$pymoldir/modules
modules=$pymoldir/modules
svnpymol=svnpymol
svnpymol=svnpymol
Line 187: Line 187:
   
   
###################################################
###################################################
[ -d $HOME/Software ] || mkdir $HOME/Software
[ -d $pymoldir ] || mkdir -p $pymoldir
[ -d $pymoldir ] || mkdir $pymoldir
[ -d $HOME/bin ] || mkdir $HOME/bin
[ -d $HOME/bin ] || mkdir $HOME/bin
[ -d $HOME/pymol ] || mkdir $HOME/pymol
 
###### Checkout pymol svn
# Checkout svn
svn co https://pymol.svn.sourceforge.net/svnroot/pymol/trunk/pymol $pymoldir/$svnpymol
svn co https://pymol.svn.sourceforge.net/svnroot/pymol/trunk/pymol $pymoldir/$svnpymol
###### Build and install pymol
# Build and install pymol
cd $pymoldir/$svnpymol
cd $pymoldir/$svnpymol
python setup.py build install --home=$pymoldir --install-purelib=$modules --install-platlib=$modules
python setup.py build install --home=$pymoldir --install-purelib=$modules --install-platlib=$modules
Line 201: Line 198:
python setup2.py install
python setup2.py install
install pymol $pymoldir/
install pymol $pymoldir/
 
########## Setup freemol - for MPEG support ############
########## Setup freemol - for MPEG support ############
svn co svn://bioinformatics.org/svnroot/freemol/trunk $pymoldir/$svnfreemol
svn co svn://bioinformatics.org/svnroot/freemol/trunk $pymoldir/$svnfreemol
cd $pymoldir/$svnfreemol/src/mpeg_encode
cd $pymoldir/$svnfreemol/src/mpeg_encode
export FREEMOL=$pymoldir/$svnfreemol/freemol
export FREEMOL=$pymoldir/$svnfreemol/freemol
Line 210: Line 206:
make
make
make install
make install
## Make a shortcut to set env for freemol and then execute pymol
echo '#!/bin/bash' >> $pymoldir/pymolMPEG.sh
echo "export FREEMOL=$pymoldir/$svnfreemol/freemol" >> $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


########## Install PluginArchitecture ############
########## Install PluginArchitecture ############
git clone https://github.com/speleo3/pymolplugins.git $pymoldir/$pymolplugins
git clone https://github.com/speleo3/pymolplugins.git $pymoldir/$pymolplugins
t="'"
echo "import sys" >> $pymoldir/.pymolrc.py
echo "sys.path.append($t$pymoldir$t)" >> $pymoldir/.pymolrc.py
echo "import $pymolplugins" >> $pymoldir/.pymolrc.py
########## Install Pymol-script-repo ############
########## Install Pymol-script-repo ############
git clone git://github.com/Pymol-Scripts/Pymol-script-repo.git $pymoldir/$pymolscriptrepo
git clone git://github.com/Pymol-Scripts/Pymol-script-repo.git $pymoldir/$pymolscriptrepo
echo "import sys,os" >> $pymoldir/.pymolrc
echo "sys.path.append($t$pymoldir/$pymolscriptrepo$t)" >> $pymoldir/.pymolrc
echo "os.environ['PYMOL_GIT_MOD']=$t$pymoldir/$pymolscriptrepo/modules$t" >> $pymoldir/.pymolrc
echo "import plugins" >> $pymoldir/.pymolrc
########## Make links ############
ln -s $pymoldir/.pymolrc.py $HOME/.pymolrc.py
ln -s $pymoldir/.pymolrc $HOME/.pymolrc
</source>
=== Update script ===
To pull and update PyMOL, one can make this script
Make a text file "updatepymol.sh" and make it executable
<source lang="bash">
chmod u+x updatepymol.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
svn up $pymoldir/$svnpymol
svn up $pymoldir/$svnfreemol
cd $pymoldir/$pymolplugins
git pull
cd $pymoldir/$pymolscriptrepo
git pull
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 ############
cd $pymoldir/$svnfreemol/src/mpeg_encode
export FREEMOL=$pymoldir/$svnfreemol/freemol
./configure
make
make install


## Make a shortcut to set env for freemol and then execute pymol
## Make a shortcut to an extended pymol execution
rm $pymoldir/pymolMPEG.sh
echo "#!/bin/bash" >> $pymoldir/pymolMPEG.sh
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 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
tail -n +2 $pymoldir/pymol >> $pymoldir/pymolMPEG.sh
chmod u+x $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>
</source>



Revision as of 17:48, 27 February 2012

This page describes how to install open-source PyMOL on Linux.

Install distribution specific binary package

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:

# Debian/Ubuntu/Mint
sudo apt-get install pymol

# Fedora
su -c 'yum install pymol'

# Gentoo
su -c 'emerge -av pymol'

# openSUSE (12.1 and later)
sudo zypper install pymol

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

Install from source

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

Requirements

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

  • Subversion to download the source code
  • Python (with distutils)
  • Pmw (Python Megawidgets)
  • OpenGL driver (I use NVidia)
  • libpng
  • freetype

On many Linux systems, one of the following commands installs all requirements:

# Debian/Ubuntu/Mint
sudo apt-get install subversion build-essential python-dev python-pmw \
  libglew-dev freeglut3-dev libpng-dev libfreetype6-dev

# Fedora/CentOS
su -c 'yum install subversion python-devel freeglut-devel freetype-devel tkinter python-pmw'

# Gentoo
sudo -c 'emerge -av dev-vcs/subversion dev-lang/python dev-python/pmw media-libs/glew \
  media-libs/freeglut media-libs/libpng media-libs/freetype'

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

Get latest source from SVN

This will download the latest source to /tmp/pymol:

cd /tmp
svn co https://pymol.svn.sourceforge.net/svnroot/pymol/trunk/pymol pymol
cd pymol

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 prefix variable to something like $HOME/pymol-svn.

#!/bin/bash -e

prefix=/opt/pymol-svn
modules=$prefix/modules

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

export PYTHONPATH=$modules:$PYTHONPATH
python setup2.py install
install pymol $prefix/

Now launch PyMOL like this (you may copy this launcher into your $PATH, like to /usr/local/bin):

/opt/pymol-svn/pymol

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)
sudo apt-get install build-essential gcc-4.4 g++-4.4
export CC=/usr/bin/gcc-4.4
  • If you get an error message "ImportError: No module named Pmw" and lack half of the user interface, then run the additional command
python setup2.py install pmw

to install a copy of the Python MegaWidgets.

Ubuntu/Mint 12 compile and install with MPEG support

First install dependencies.

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

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
http://fedoraproject.org/wiki/EPEL
And the CentOS repository for additional .rpm are located here
http://mirror.centos.org/centos/6/os/x86_64/Packages/

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>

Then add Centos repository

rpm --import http://mirror.centos.org/centos/6/os/x86_64/RPM-GPG-KEY-CentOS-6
sudo gedit /etc/yum.repos.d/centos.repo

Write these lines.

[centos]
name=Centos for RHEL/ CentOS $releasever - $basearch
baseurl=http://mirror.centos.org/centos/6/os/x86_64
enabled=1

Then check configuration. Do NOT UPGRADE PACKAGES from CentOS. It will replace RHEL packages.
If you do upgrade packages, you will now see Centos login and such, but not much is problematic.

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

Then disable centos repository. Set enabled=0

sudo gedit /etc/yum.repos.d/centos.repo

Now install pymol

bash installpymol.sh

Make sure, that you will have ~/bin as part of your path

gedit ~/.cshrc

Make sure this lines is in the file. Only if you use tcsh shell.

setenv PATH ${PATH}:{$HOME}/bin

Install script

Make a text file "installpymol.sh" and make it executable

chmod u+x installpymol.sh

Put this in the file, modify the first line

#!/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

Change MPEG settings

Change settings in

$HOME/Software/pymol/svnfreemol/freemol/libpy/freemol/mpeg_encode.py

For example, change in line 205:
FRAME_RATE 24
(Note, only legal values is allowed: 23.976, 24, 25, 29.97, 30, 50 ,59.94, 60)

Then restart PyMOL.