TPP:Installing on Mac OSX
From SPCTools
Caution!
Please Note: The TPP is not currently officially supported on Max OSX. This means that we can not respond to installation or useage help requests. Users, however, are encouraged to post to the spctools-discuss newsgroup to seek help from the community, or contact the author (Ulrich, see below) directly.
Author
These notes were kindly prepared by Ulrich auf dem Keller of UBC (ukeller at interchange dot ubc dot ca), and formatted for the wiki with his permission by Josh Tasman.
Introduction
This guide describes installation of the TPP, version v4.0 SQUALL (release candidate) rev.0, Build 200805281113 (linux) on Mac OSX 10.5.2 Test machine: MacBook Pro, 2.33 GHz Intel Core 2 Duo, 3 GB RAM, 160 GB HD.
Latest Mac OSX version used for testing: Intel 10.5.2
This tutorial is intended for someone comfortable running unix shell commands and installing and configuring software.
Requirements
Intel-based Mac running OSX 10.5.2. At this time, certain parts of the code which rely on byte-order have not been tweaked for the PowerPC CPUs, which have reversed byte-order from Intel chips.
Getting the TPP source
- TPP source at SourceForge: [1]
- Subversion Repository:
svn co https://sashimi.svn.sourceforge.net/svnroot/sashimi/trunk/trans_proteomic_pipeline path/to/local/directory
Prerequisites
install Apple's Developer Tools, including X11SDK.pkg
Important note: a recent X11 update from Apple may have erased previously installed X11SDK files; if you get errors from Fink regarding X11, reinstall X11SDK.pkg (from you OSX install discs) and try again.
install fink including unstable tree
For Mac OS X 10.5 Leopard you have to install fink from source (fink-0.28.1) following instructions on http://www.finkproject.org/download/srcdist.php?phpLang=e
I would recommend to build all packages from source with 'fink install'.
install Apache2
fink install is not recommended-- it sets up the config files in an unfamiliar way. Following a 10.4.6 install turorial :
- download and decompress source
- in source dir:
sudo mkdir /apache2 ./configure --prefix=/apache2 --enable-module=most --enable-shared=max make sudo make install
- you can also trigger System Preferences => Personal Websharing to start apache2 instead of built-in apache 1.3 (http://www.phpmac.com/articles.php?view=214) (note: TPP most likely also works with built-in Apache 1.3)
- modules included during build are sufficient to run the TPP (check with httpd -l)
Note: Mac OS X 10.5 comes with Apache2, this step can be skipped.
edit httpd.conf
Location (following the above installation): /apache2/conf/httpd.conf
Note: on Mac OS X 10.5: /etc/apache2/conf/httpd.conf
running on a different port (1441 is the standard port for a TPP installation)
Change
Listen 80
to
Listen 1441
as per Linux README (enable SSI, cgi etc.)
DocumentRoot
In the author's install, DocumentRoot was changed from
/Library/WebServer/Documents
to
/Library/WebServer/Documents/thegpm
since X!Tandem and the GPM like to set the DocumentRoot to their own directory.
I will use /Library/WebServer/Documents/tpp in this example
Also change the <directory> section to match your DocumentRoot.
# # DocumentRoot: The directory out of which you will serve your # documents. By default, all requests are taken from this directory, but # symbolic links and aliases may be used to point to other locations. # DocumentRoot "/Library/WebServer/Documents/tpp" ... # # This should be changed to whatever you set DocumentRoot to. # <Directory "/Library/WebServer/Documents/tpp"> ...
TPP-specific config
Appended to end of httpd.conf; change "/usr/local/tpp" to wherever you will install the TPP, for instance "/Users/youraccount/tpp-bin".
# ISB-Tools Trans Proteomic Pipeline directive # Alias /tpp/html "/usr/local/tpp/html" <Directory "/usr/local/tpp/html"> AllowOverride None Options Includes Indexes FollowSymLinks MultiViews Order allow,deny Allow from all </Directory> Alias /tpp/schema "/usr/local/tpp/schema" <Directory "/usr/local/tpp/schema"> AllowOverride None Options Includes Indexes FollowSymLinks MultiViews Order allow,deny Allow from all </Directory> Alias /tpp/cgi-bin "/usr/local/tpp/cgi-bin" <Directory "/usr/local/tpp/cgi-bin"> AllowOverride None Options ExecCGI Includes Indexes FollowSymLinks MultiViews AddHandler cgi-script .pl .cgi Order allow,deny Allow from all SetEnv WEBSERVER_ROOT /Library/WebServer/Documents/thegpm/ SetEnv WEBSERVER_URL http://localhost/ </Directory>
Controlling Apache2
- starting: you will have to do this manually every time you reboot unless you set the server to start automatically; see above section for link.
sudo /apache2/bin/apachectl -k start
- stopping:
sudo /apache2/bin/apachectl -k stop
- restarting (if you change config files)
sudo /apache2/bin/apachectl -k restart
Note: on Mac OS X 10.5 Apache2 is started from the System Preferences.
install gnuplot 4
easiest via fink
fink install gnuplot
if you don't have a working TeX installation fink will ask to install it. Note: fink does no longer support a system-tetex or a system-texlive package for TeX distributions already installed on the system. The most convenient is to install the fink distribution to satisfy dependencies.
remember, if you see errors related to X11, reinstall the Apple X11SDK.pkg.
Important: gnuplot must be find-able by the apache program. Adjust paths or
ln -s /sw/bin/gnuplot /usr/bin/gnuplot
install wget
easiest via fink:
fink install wget
install md5sum
Only if necessary! Installed by default on modern fink installs. You can verify that it is already there by typing "which md5sum".
fink install coreutils
install sed
version 4.1.5:
fink install sed
install GD
fink install gd
boost libraries
You can either use fink (recommended) or compile from boost source manually:
fink install
Perhaps with older versions of fink, some report that it is necessary to edit the boost info file before installing with fink to disable --without-serialization. I did not need to do this with current fink install-- the standard fink installer seemed to work.
- /sw/fink/10.4/stable/main/finkinfo/libs/boost1.33.info
$ fink install boost1.33-shlibs Password: Information about 2301 packages read in 1 seconds. fink needs help picking an alternative to satisfy a virtual dependency. The candidates: (1) db44-aes: Berkeley DB embedded database - crypto (2) db44: Berkeley DB embedded database - non crypto Pick one: [1] 2 The following package will be installed or updated: boost1.33-shlibs
This step takes at least 1 hour. Maybe binary install is possible?
next:
fink install boost-1.33
(This step only takes a second.)
manual source install
install boost-1.33.1:
- get source (http://sourceforge.net/project/showfiles.php?group_id=7586)
- configure & make & install
nice
since nice resides in /usr/bin on OS X and not in /bin:
sudo ln -s /usr/bin/nice /bin/nice
Configuring TPP for installation
edit src/Makefile.incl according to Linux README
edit src/Makefile
Makefile settings for pure fink install: change lines for GD_LIB and LDFLAGS, marked with the comment "changed for OSX/fink"
Choose proper settings for manual or fink boost install.
# # cygwin or linux? # ifeq (${OS},Windows_NT) OSFLAGS= -D__CYGWIN__ GD_LIB= /lib/libgd.a BOOST_REGEX_LIB= /lib/libboost_regex-gcc-mt.a else OSFLAGS= -D__LINUX__ GD_LIB= -L/sw/lib/ -lgd BOOST_REGEX_LIB= -lboost_regex -lpthread endif .... # put here the complete directory path for the include subdirectory ## OSX: two options: fink or manual boost install ## use following for manual boost install #CCINC= -I/usr/local/include -I/usr/include -I/usr/local/include/boost-1_33_1 ## use following for fink boost install CCINC= -I/sw/include -I/usr/include -I/sw/include/boost-1_33_1 .... # here the complete directory path for the lib subdirectory followed by -lm LDFLAGS= -L/usr/local/lib -L/usr/lib -L/sw/lib -lboost_regex -lboost_filesystem -lboost_serialization -lm ${DEBUG} ....
Note: Using /sw/include will cause an error due to a problem in "expat.h". Either load this header file from /usr/include or remove the "," at the end of line 46 in /sw/include/expat.h
"-Werror" was removed from the compiler flags since there were some "int" instead of "double" warnings when compiling ProteinProphet. So far they don't seem to be critical since the new C++ binary gives the same results as the old version.
Finally, line 264 in PepXMLViewer.html was changed back to
document.getElementById('msgs').innerHTML += "<br/>(URL: " + http_req.url ")";
With the extra "+" the ajax code added an extra WEBSERVER_ROOT path to the url path.
Make sure protxml2html.pl in in your webserver executables path. The easiest way to do so is to make a symlink to /sw/bin which was already added to your path:
ln -s /usr/local/tpp/bin/protxml2html.pl /sw/bin/protxml2html.pl
change PepXMLViewer Makefile
if boost installed via fink change /usr/local/lib to /sw/lib:
# where to find libexpat.a for linking stage #VPATH = $(EXPAT)/.libs LDFLAGS = -L/usr/local/lib -lboost_regex -lboost_filesystem -lboost_serialization -lm $(PROFILE) # yes, the headers are in the 'lib' directory IFLAGS = -I$(EXPAT)/lib -I/usr/local/include/boost-1_33_1
edit perl scripts
(for most perl scripts, see note below:)
sed -i 's/linux/darwin/g' *.pl
don't replace "linux" by "darwin" in show_search_params.pl, show_help.pl
or better: not in those *.pl with $CGI_HOME instead of $CGI_HOME_FULLPATH in configuration for linux installation
modify source code: src/Visualization/Pep3D/cgi_disCidData.c
(to get right path for png images with WEBSERVER_ROOT stripped off)
- lines 323-327:
//printf("<img src=\"%s\"/>\n", pngFile); //modification for Mac OS X char *pStr = strstr(pngFile, "/tpp"); printf("<img src=\"%s\"/>\n", pStr);
modify source code: CGI/show_sens_err.pl
(same WEBSERVER_ROOT strip off problem)
- -insert at line 215:
#added for Mac OS X - Uadk 03/10/07 my $serverRoot = $ENV{'WEBSERVER_ROOT'}; if ( (length $serverRoot) <= (length $local_pngfile) && index((lc $local_pngfile), (lc $serverRoot)) == 0 ) { $local_pngfile = '/' . substr($local_pngfile, (length $serverRoot)); }
build TPP code
make configure
make all
make install
edit paths
If tpp executables are not in /usr/local, you must adjust your paths accordingly.
generate directories
tpp/html, tpp/schema, tpp/cgi-bin in Apache DocumentRoot
necessary?
Try it!
Load http://localhost:1441/tpp/cgi-bin/check_env.pl in your browser-- if no error, things are looking good.
TPP web GUI (Petunia)
getting the source
get tpp_gui from the sashimi SVN repository
modify the code for OSX installation
change tpp_gui.pl paths etc.
generate the password
for "guest" account, using perl crypt, following the thread in spctools-discuss: http://groups.google.com/group/spctools-discuss/browse_thread/thread/fb8ea00f347f005d/296e071e68faf1f1?lnk=gst&q=perl+crypt&rnum=1#296e071e68faf1f1
Place the following code in an executable setpasswd.pl file and run as follows:
#!/usr/bin/perl -w print crypt($ARGV[0], "isbTPPspc") . "\n";
then
setpasswd.pl [password] > .password
Remaining issues
Link to ASAPRatio -pval.png in ProteinProphet has the the wrong path (WEBSERVER_ROOT does not get stripped off), but the image is generated.
There might be similar path problems as on other Linux distributions. To view the image simply change the URL manually. Should be relatively easy to fix for good perl programmers.