This tutorial is very similar to Installing and Configuring Environment Modules on CentOS 5 and the steps are very similar for CentOS 6 except that the tcl/tk 8.5.x used in CentOS repository does not have tclConfig.sh which is needed when you compile the Modules packages. I used 8.4.x which is similar to the version used in the CentOS 5 repository. You can use more more updated version of tcl
Step 1: Download the modules packages
Download the latest modules packages from Modules Sourceforge Project Site.
Step 2. Download the tcl/tk package from tcl/tk download site
# tar -zxvf tcl8.4.19-src.tar.gz
# cd tcl8.4.19/unix
Step 2a. Compile the tcl package
# ./configure --prefix=/usr/local/tcl --enable-threads
# make && make install
Step 2b. Compile the tk package
# tar -zxvf tk8.4.19-src.tar.gz
# cd tk8.4.19
# ./configure --prefix=/usr/local/tk --with-tcl=/usr/local/tcl/lib
# make && make install
Make sure you put the tcl library in the /etc/ld.so.conf.d
# vim /etc/ld.so.conf.d/tclx-x86_64.conf
/usr/local/tcl/lib
/usr/local/tk/lib
Do a ldconfig to update dynamic linker run-time bindings
# /sbin/ldconfig
Step 3: Unpacked, Configure and Install
# tar -zxvf modules-3.2.9c.tar.gz
Go to the Modules folder ($ModuleHome)
# cd modules-3.2.9
I wanted to keep all my individual modules files at /usr/local/Modules/contents. You can keep module files anywhere you wish to keep.
# ./configure --with-module-path=/usr/local/Modules/contents
Make and install the configuration
# make && make install
Step 4: Amend .modulefiles
Edit . modules to let Modules know where all the customized module files will be kept
# vim /usr/local/Modules/3.2.9/init/.modulespath
Comment out all the lines except the directory where all the customised modules files will be kept.
.....
.....
/usr/local/Modules/contents # General module files
.....
.....
Step 5: Update /etc/profile.d of the Servers
Copy the profile.modules from the $ModuleHome Directory
# cp /$ModuleHome/modules-3.2.9/etc/global/profile.modules /etc/profile.d/modules.sh
The content of modules.sh are as followed
#----------------------------------------------------------------------#
# system-wide profile.modules #
# Initialize modules for all sh-derivative shells #
#----------------------------------------------------------------------#
trap "" 1 2 3
case "$0" in
-bash|bash|*/bash) . /usr/local/Modules/default/init/bash ;;
-ksh|ksh|*/ksh) . /usr/local/Modules/default/init/ksh ;;
-zsh|zsh|*/zsh) . /usr/local/Modules/default/init/zsh ;;
*) . /usr/local/Modules/default/init/sh ;; # sh and default for scripts
esac
trap 1 2 3
Create a softlink at /usr/local/Modules
# cd /usr/local/Modules
# ln -s 3.2.9 default
Sample Installation of an application using Modules (Intel Compilers)
Step 1: Create a Module File.
Place the Module File for Intel in /usr/local/Modules/contents
a. Create an Intel Folder inside /usr/local/Modules/contents
# mkdir /usr/local/Modules/contents/intel
b. Create a module file for the version of Intel (In my case, “12.0.2″). To save some time, you can copy a “sample” file and you can edit
# cp $ModuleHome/modules-3.2.9/modulefiles/modulefile /usr/local/Modules/contents/intel/12.0.2
# vim /usr/local/Modules/contents/intel/12.0.2
#%Module1.0
proc ModulesHelp { } {
global version prefix
puts stderr "\tIntel XE 12.0.2 (icc, icpc, ifort)"
}
module-whatis "Intel XE 12.0.2 (icc, icpc, ifort)"
prepend-path PATH /opt/intel/composerxe/bin
prepend-path LIBRARY_PATH /opt/intel/composerxe/lib/intel64
prepend-path LD_LIBRARY_PATH /opt/intel/composerxe/lib/intel64:/opt/intel/mkl/10.2.6.038/lib/em64t
prepend-path MANPATH /opt/intel/composerxe/man
prepend-path MKL_HOME /opt/intel/mkl/10.2.6.038
setenv CC icc
setenv CXX icpc
setenv FC ifort
setenv F77 ifort
setenv F90 ifort
Step 2: Setting the Default versions of Intel.
If you have different version of software you wish to present to the users, do the following
# vim /usr/local/Modules/contents/intel/.version
#%Module1.0
set ModuleVersion "12.0.2"
More Information
- Part 2 – Usage of Environment Modules on CentOS and in Cluster