|
Size: 2593
Comment:
|
Size: 6742
Comment:
|
| Deletions are marked like this. | Additions are marked like this. |
| Line 2: | Line 2: |
| This page is targeted at those who wish to develop and build the freesurfer source code on their Linux platform. These instructions have been tested for CentOS6 x86_64 minimal desktop. | This page is targeted at those who wish to build and develop the !FreeSurfer source code on their Linux platform. These instructions have been tested for CentOS6, CentOS7, Ubuntu 14.04 LTS, Ubuntu 16.04 LTS, and Debian 8. See the [[freesurfer_mac_developers_page|Mac OSX build page]] for instructions on how to build on Mac OS X platform. |
| Line 4: | Line 5: |
| === Get the Source Code === ''If you already have a working local copy of the CVS repository then you can skip this step.'' |
=== Getting the Source Code === The first thing users at the Martinos Center need to do is '''prepend''' the directory {{{/usr/pubsw/packages/git-annex/current/bin}}} to their PATH. Once that is done, the Freesurfer source code can be cloned from the official [[https://github.com/freesurfer/freesurfer|Freesurfer github page]]: |
| Line 7: | Line 10: |
| # Local CVS access: export CVSROOT=/space/repo/1/dev cvs checkout -P dev |
git clone https://github.com/freesurfer/freesurfer.git }}} |
| Line 11: | Line 13: |
| # Or for remote access: export CVSROOT=:ext:USER@door.nmr.mgh.harvard.edu:/space/repo/1/dev cvs checkout -P dev |
Note: have a look at the [[Freesurfer_github]] local wiki page too. ==== Get the Data Files (Optional) ==== The Freesurfer repository contains a large number data files which are not included with a default {{{git clone}}} of the repo. Instead, these data files are distributed via the [[https://git-annex.branchable.com/|git-annex]] software. Users who only want the repository for the purposes of compiling binaries and/or inspecting source code, the {{{git clone}}} command from above is all you need to do. Users who want to run build time checks, or perform a full local installation, or just want all the contents of the repository, will need to add a special data store remote repository in order to retrieve these files. To add the data store repository (this only needs to be done once): {{{ cd freesurfer git remote add datasrc https://surfer.nmr.mgh.harvard.edu/pub/dist/freesurfer/repo/annex.git git fetch datasrc |
| Line 15: | Line 24: |
| Or, you can get readonly CVS access to the source code by following the directions [[https://surfer.nmr.mgh.harvard.edu/fswiki/ReadOnlyCVS|on this page]]: | |
| Line 17: | Line 25: |
| /* === Get the build tools (Ubuntu plantforms only) === If you are on an Ubuntu machine you will have to install the following packages:{{{sudo apt-get install autoconf libtool gfortran cvs}}} */ | And to retrieve data files: {{{ git annex get <filename> }}} The data files have been broken down into categories, those being required for build time checks, those required for a local installation, and everything else. Use one of the following commands depending on your needs: {{{ ## Get only the data files required for build time checks (1.9 GB) git annex get --metadata fstags=makecheck . ## Get only the data files required for local installation (4.3 GB) git annex get --metadata fstags=makeinstall . ## Just give me everything! Not Recommended (6.8 GB) git annex get . }}} |
| Line 20: | Line 45: |
| === Download and Install the Libraries === | === Install System Libraries === |
| Line 22: | Line 47: |
| The following packages were required before building on a CentosOS 6.6 (minimal desktop). | Building freesurfer requires various system specific libraries be installed on your machine. Depending on your specific linux distribution, the required system packages are listed below: |
| Line 24: | Line 49: |
| '''CentOS 6:''' | |
| Line 25: | Line 51: |
| yum groupinstall "Development Tools" yum install mesa-libGLU-devel \ |
$> yum groupinstall "Development Tools" $> yum install mesa-libGLU-devel \ |
| Line 32: | Line 58: |
| liblapack-devel.x86_64 \ | lapack-devel.x86_64 \ libXaw-devel.x86_64 \ |
| Line 36: | Line 63: |
| '''CentOS 7:''' {{{ $> yum groupinstall "Development Tools" $> yum install mesa-libGLU-devel \ freetype-devel.x86_64 \ libuuid-devel.x86_64 \ uuid-c++-devel.x86_64 \ libXmu-devel.x86_64 \ libXi-devel.x86_64 \ libXaw-devel.x86_64 \ libpng-devel.x86_64 \ lapack-static.x86_64 \ blas-static.x86_64 }}} '''Ubuntu 14.04 LTS / Debian 8:''' {{{ $> sudo apt-get update $> sudo apt-get install build-essential \ tcsh \ libtool-bin \ libtool \ automake \ gfortran \ libglu1-mesa-dev \ libfreetype6-dev \ uuid-dev \ libxmu-dev \ libxmu-headers \ libxi-dev \ libx11-dev \ libxml2-utils \ libxt-dev \ libjpeg62-dev \ libxaw7-dev \ liblapack-dev }}} '''Ubuntu 16.04 LTS:''' <<BR>>Ubuntu 16 requires all the same packages required by Ubuntu 14 (listed above), along with the additional requirement of installing gcc v4.8 (this is due to errors generated by the default version of gcc included with Ubuntu 16). Update to pip 18, because a bug in pip 8 causes the ./python subdirectory install to fail with "distutils.errors.DistutilsOptionError: can't combine user with prefix, exec_prefix/home, or install_(plat)base". {{{ ## Install as above then ... ## Install gcc/g++/gfortran version 4.8 $> sudo apt-get install gcc-4.8 g++-4.8 libgfortran-4.8-dev ## Set gcc/g++ 4.8 to be the default compiler $> sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.8 50 $> sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.8 50 $> sudo /usr/bin/python3.5 -m pip install --upgrade pip }}} |
|
| Line 38: | Line 119: |
| Use the following commands to download and install the prepackaged bundle of open-source libraries required for building Freesurfer: | === Library Dependencies === In order to compile freesurfer, you will need to download and install our prebuilt bundle of 3rd party dependancies. Download the package and extract its content. Remember the extraction location as you will need to pass that directory to the {{{configure}}} script. |
| Line 42: | Line 125: |
| wget ftp://surfer.nmr.mgh.harvard.edu/pub/dist/fs_supportlibs/prebuilt/centos6_x86_64/centos6-x86_64-packages.tar.gz mkdir -p /usr/pubsw/packages tar -C /usr/pubsw/packages -xzvf centos6-x86_64-packages.tar.gz |
$> cd ~ $> wget ftp://surfer.nmr.mgh.harvard.edu/pub/dist/fs_supportlibs/prebuilt/centos6_x86_64/centos6-x86_64-packages.tar.gz $> tar -xzvf centos6-x86_64-packages.tar.gz $> ./centos6-x86_64-packages/setup.sh |
| Line 47: | Line 131: |
| /* '''''On 32bit systems'''''{{{wget ftp://surfer.nmr.mgh.harvard.edu/pub/dist/fs_supportlibs/prebuilt/centos6_x86_64/centos6-x86_64-packages.tar.gz mkdir -p /usr/pubsw/packages tar -C /usr/pubsw/packages -xzvf centos6-x86_64-packages.tar.gz }}} */ | === Setup, Configure, Make === Determine the location you want Freesurfer to be installed. For example, in the case below we will assume the user wants freesurfer to be installed in {{{/home/USER/freesurfer}}}. Type the following commands in the top-level Freesurfer directory (the directory that contains configure.in and all the mri_* and mris_* directories.): |
| Line 49: | Line 134: |
| === Setup, Configure, Make === Determine the location you want Freesurfer to be installed. For example, in case case we will assume the user wants freesurfer to be installed in {{{/home/USER/freesurfer}}}. Type the following commands in the top-level Freesurfer directory (the directory that contains configure.in and all the mri_* and mris_* directories.) |
|
| Line 52: | Line 135: |
| ./setup_configure ./configure \ --prefix=/home/USER/freesurfer make -j4 make install |
$> cd ~/freesurfer $> ./setup_configure ## Centos/Debian $> ./configure --disable-Werror --with-pkgs-dir=/home/username/centos6-x86_64-packages ## Ubuntu $> ./configure --disable-Werror --with-pkgs-dir=/home/username/centos6-x86_64-packages --disable-xawplus-apps --disable-tcltk-apps $> make -j4 ## Run build time checks. Requires data files. (See "Data Files" from above) $> make check ## Install locally. Requires data files. (See "Data Files" from above) $> make install |
| Line 58: | Line 152: |
| Line 59: | Line 154: |
=== Contributing Changes === Users who wish to make contributions to the Freesurfer code base should see the following pages https://surfer.nmr.mgh.harvard.edu/fswiki/Freesurfer_github - how to fork the Freesurfer repository and submit pull requests https://surfer.nmr.mgh.harvard.edu/fswiki/Freesurfer_design - insights into the design of the freesurfer code ---- |
This page is targeted at those who wish to build and develop the FreeSurfer source code on their Linux platform. These instructions have been tested for CentOS6, CentOS7, Ubuntu 14.04 LTS, Ubuntu 16.04 LTS, and Debian 8. See the Mac OSX build page for instructions on how to build on Mac OS X platform.
Contents
1. Getting the Source Code
The first thing users at the Martinos Center need to do is prepend the directory /usr/pubsw/packages/git-annex/current/bin to their PATH. Once that is done, the Freesurfer source code can be cloned from the official Freesurfer github page:
git clone https://github.com/freesurfer/freesurfer.git
Note: have a look at the Freesurfer_github local wiki page too.
1.1. Get the Data Files (Optional)
The Freesurfer repository contains a large number data files which are not included with a default git clone of the repo. Instead, these data files are distributed via the git-annex software. Users who only want the repository for the purposes of compiling binaries and/or inspecting source code, the git clone command from above is all you need to do. Users who want to run build time checks, or perform a full local installation, or just want all the contents of the repository, will need to add a special data store remote repository in order to retrieve these files.
To add the data store repository (this only needs to be done once):
cd freesurfer git remote add datasrc https://surfer.nmr.mgh.harvard.edu/pub/dist/freesurfer/repo/annex.git git fetch datasrc
And to retrieve data files:
git annex get <filename>
The data files have been broken down into categories, those being required for build time checks, those required for a local installation, and everything else. Use one of the following commands depending on your needs:
## Get only the data files required for build time checks (1.9 GB) git annex get --metadata fstags=makecheck . ## Get only the data files required for local installation (4.3 GB) git annex get --metadata fstags=makeinstall . ## Just give me everything! Not Recommended (6.8 GB) git annex get .
2. Install System Libraries
Building freesurfer requires various system specific libraries be installed on your machine. Depending on your specific linux distribution, the required system packages are listed below:
CentOS 6:
$> yum groupinstall "Development Tools"
$> yum install mesa-libGLU-devel \
freetype-devel.x86_64 \
libuuid-devel.x86_64 \
uuid-c++-devel.x86_64 \
libXmu-devel.x86_64 \
libXi-devel.x86_64 \
lapack-devel.x86_64 \
libXaw-devel.x86_64 \
libpng-devel.x86_64CentOS 7:
$> yum groupinstall "Development Tools"
$> yum install mesa-libGLU-devel \
freetype-devel.x86_64 \
libuuid-devel.x86_64 \
uuid-c++-devel.x86_64 \
libXmu-devel.x86_64 \
libXi-devel.x86_64 \
libXaw-devel.x86_64 \
libpng-devel.x86_64 \
lapack-static.x86_64 \
blas-static.x86_64Ubuntu 14.04 LTS / Debian 8:
$> sudo apt-get update
$> sudo apt-get install build-essential \
tcsh \
libtool-bin \
libtool \
automake \
gfortran \
libglu1-mesa-dev \
libfreetype6-dev \
uuid-dev \
libxmu-dev \
libxmu-headers \
libxi-dev \
libx11-dev \
libxml2-utils \
libxt-dev \
libjpeg62-dev \
libxaw7-dev \
liblapack-devUbuntu 16.04 LTS:
Ubuntu 16 requires all the same packages required by Ubuntu 14 (listed above), along with the additional requirement of installing gcc v4.8 (this is due to errors generated by the default version of gcc included with Ubuntu 16). Update to pip 18, because a bug in pip 8 causes the ./python subdirectory install to fail with "distutils.errors.DistutilsOptionError: can't combine user with prefix, exec_prefix/home, or install_(plat)base".
## Install as above then ... ## Install gcc/g++/gfortran version 4.8 $> sudo apt-get install gcc-4.8 g++-4.8 libgfortran-4.8-dev ## Set gcc/g++ 4.8 to be the default compiler $> sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.8 50 $> sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.8 50 $> sudo /usr/bin/python3.5 -m pip install --upgrade pip
3. Library Dependencies
In order to compile freesurfer, you will need to download and install our prebuilt bundle of 3rd party dependancies. Download the package and extract its content. Remember the extraction location as you will need to pass that directory to the configure script.
$> cd ~ $> wget ftp://surfer.nmr.mgh.harvard.edu/pub/dist/fs_supportlibs/prebuilt/centos6_x86_64/centos6-x86_64-packages.tar.gz $> tar -xzvf centos6-x86_64-packages.tar.gz $> ./centos6-x86_64-packages/setup.sh
4. Setup, Configure, Make
Determine the location you want Freesurfer to be installed. For example, in the case below we will assume the user wants freesurfer to be installed in /home/USER/freesurfer. Type the following commands in the top-level Freesurfer directory (the directory that contains configure.in and all the mri_* and mris_* directories.):
$> cd ~/freesurfer $> ./setup_configure ## Centos/Debian $> ./configure --disable-Werror --with-pkgs-dir=/home/username/centos6-x86_64-packages ## Ubuntu $> ./configure --disable-Werror --with-pkgs-dir=/home/username/centos6-x86_64-packages --disable-xawplus-apps --disable-tcltk-apps $> make -j4 ## Run build time checks. Requires data files. (See "Data Files" from above) $> make check ## Install locally. Requires data files. (See "Data Files" from above) $> make install
Done!
5. Contributing Changes
Users who wish to make contributions to the Freesurfer code base should see the following pages
https://surfer.nmr.mgh.harvard.edu/fswiki/Freesurfer_github - how to fork the Freesurfer repository and submit pull requests
https://surfer.nmr.mgh.harvard.edu/fswiki/Freesurfer_design - insights into the design of the freesurfer code
Send your comments/questions/feedback to zkaufman@nmr.mgh.harvard.edu
