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
Dear Friend, thanks a lot for this how to. we improve our work with this tool. do you know how we change the:EVAL_ALIAS=1 from 1 to 0
VERSION=3.2.10
DATE=2012-12-21
AUTOLOADPATH=undef
BASEPREFIX=”/usr/local”
BEGINENV=99
CACHE_AVAIL=undef
DEF_COLLATE_BY_NUMBER=undef
DOT_EXT=””
EVAL_ALIAS=1
HAS_BOURNE_FUNCS=1
HAS_BOURNE_ALIAS=1
HAS_TCLXLIBS=undef
HAS_X11LIBS=1
LMSPLIT_SIZE=undef
MODULEPATH=”/tools/Modules/contents/”
MODULES_INIT_DIR=”/usr/local/Modules/3.2.10/init”
PREFIX=”/usr/local/Modules/3.2.10″
TCL_VERSION=”8.4″
TCL_PATCH_LEVEL=”8.4.20″
TMP_DIR=”/tmp”
USE_FREE=undef
VERSION_MAGIC=1
VERSIONPATH=”/usr/local/Modules/versions”
WANTS_VERSIONING=1
WITH_DEBUG_INFO=undef
LikeLike