Environment Modules

Stable release|

5.3.1 / June 27, 2023; 2 years ago (2023-06-27)

Operating system| Unix-like
License| GNU General Public License
Website| modules.sourceforge.net

The Environment Modules system is a tool to help users manage their Unix or Linux shell environment, by allowing groups of related environment-variable settings to be made or removed dynamically.

Modules has been around since the early 1990s[1] and is used at some of the largest computer centers[2] to deploy multiple versions of different software tools to users. The National Energy Research Scientific Computing Center (NERSC) reports that they use Environment Modules to manage nearly all software.[3] Environment Modules is specified as a Baseline Configuration requirement of the DoD High Performance Computing Modernization Program (HPCMP)[4] Project Baseline Configuration[5] team for participating DoD Supercomputing Resource Centers (DSRCs).

## Contents

* 1 modulefiles
* 1.1 Default modulefiles directory
* 1.2 Add your own modules to the path
* 1.3 Use a version file within a hierarchical organization
* 2 Automatic modules initialization
* 2.1 bash, ksh, zsh, sh automatic modules initialization
* 2.2 tcsh, csh automatic modules initialization
* 3 Installing on Linux
* 3.1 Installing Environment Modules on Linux using yum and rpm
* 3.2 Installing Environment Modules on Linux using apt and dpkg
* 3.3 Installing Environment Modules on Linux from source
* 3.3.1 8.6.1 version of Tcl (Tool Command Language) built from /usr/local/src
* 3.3.2 3.2.10 version of modules built from /usr/local/src
* 4 See also
* 5 References
* 6 External links

## modulefiles

The modules system is based on modulefiles,[6] which specify groups of environment settings that need to be made together. Modulefiles can be installed in a central location for general use, or in a user directory for personal use. Environment Modules modulefiles are written in the Tcl (Tool Command Language) and are interpreted by the modulecmd program via the module[7] user interface.

The key advantage of Environment Modules is that it is shell independent and supports all major shells such as bash, ksh, zsh, sh, tcsh, and csh. The second key advantage is that it allows to use multiple versions of the program or package from the same account by just loading proper module. Those two advantages were instrumental in making Environment Modules a part of most HPC cluster setups. It also inspired several alternative implementation such as lmod from University of Texas, which is written in Lua instead of TCL.

modulefiles are created on per application per version basis. They can be dynamically loaded, unloaded, or switched. Along with the capability of using multiple versions of the same software it also can be used to implement site policies regarding the access and use of applications.

### Default modulefiles directory

The default modules search path is in a hidden configuration file you can display with:

$ cat ${MODULESHOME}/init/.modulespath
/etc/modulefiles # CentOS, Scientific Linux, RHEL
/usr/local/Modules/modulefiles # Build from source default

The /etc/modulefiles directory used by some distributions (or any other directory) can be used after a build from source by modifying the ${MODULESHOME}/init/.modulespath file.

### Add your own modules to the path

The ${MODULESHOME}/modulefiles/use.own module essentially performs these steps:

mkdir $HOME/privatemodules
cp ${MODULESHOME}/modulefiles/null $HOME/privatemodules
module use --append $HOME/privatemodules

### Use a version file within a hierarchical organization

The commands in this section require read/write/execute access to the /etc/modulefiles directory. The $HOME/privatemodules or another directory can be used instead along with "module use --append" or modification of the configuration file specifying the default modules search path.

The default modulefiles directory is empty initially. Copy the null module to the default modulefiles directory to have it shown by "module avail". The following uses the null and module-info modules to show use of a version file within a hierarchical organization and their effect on module avail and module show:

mkdir /etc/modulefiles/test
cp ${MODULESHOME}/modulefiles/null /etc/modulefiles/test/2.0
cp ${MODULESHOME}/modulefiles/module-info /etc/modulefiles/test/1.0
module avail
module show test

Set the first version as the default:

echo '#%Module' > /etc/modulefiles/test/.version
echo 'set ModulesVersion "1.0"' >> /etc/modulefiles/test/.version
module avail
module show test
module show test/2.0

Switch to the newer version as the default with:

rm /etc/modulefiles/test/.version
echo '#%Module' > /etc/modulefiles/test/.version
echo 'set ModulesVersion "2.0"' >> /etc/modulefiles/test/.version
module avail
module show test

After the above following a fresh install from source you would see:

$ module avail

-- /usr/local/Modules/3.2.10/modulefiles 

dot         module-git  module-info modules     null        use.own

- /etc/modulefiles 

-
null              test/1.0          test/2.0(default)

 /home/user/privatemodules 

--
null

$ module show test

-
/etc/modulefiles/test/2.0:

module-whatis    does absolutely nothing

-

$ module show test/1.0

-
/etc/modulefiles/test/1.0:

module-whatis    returns all various module-info values
+++ module-info +++++++++++++++++++++++++++++++
flags                   = 2
mode                    = display
name                    = test/1.0
specified               = test/1.0
shell                   = bash
shelltype               = sh
version                 = test/1.0
user                    = advanced
trace                   = 0
tracepat                = -.*
symbols                 = *undef*
+++ info ++++++++++++++++++++++++++++++++++++++
hostname                = localhost
level                   = 1
loaded null             = 0
library                 = /usr/local/lib/tcl8.6
nameofexecutable        =
sharedlibextension      = .so
tclversion              = 8.6
patchlevel              = 8.6.1
+++++++++++++++++++++++++++++++++++++++++++++++

-

## Automatic modules initialization

Environment Modules on Scientific Linux, CentOS, and RHEL distributions in the environment-modules package include modules.csh and modules.sh scripts for the /etc/profile.d directory that make modules initialization part of the default shell initialization. One of the advantages of Environment Modules is a single modulefile that supports bash, ksh, zsh, sh as well as tcsh and csh shell users for environment setup and initialization. This makes managing complex environments a bit less complicated.

For a source build the automation for all users can be manually configured.

### bash, ksh, zsh, sh automatic modules initialization

/etc/profile.d/modules.sh from the etc/global/profile.modules file in the 3.2.10 modules build directory.

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 ;; # default
esac

trap 1 2 3

Copy the etc/global/profile.modules file from the 3.2.10 modules build directory to the system initialization directory:

$ sudo cp etc/global/profile.modules /etc/profile.d/modules.sh

Add a version 3.2.10 symbolic link for the above generic addresses:

$ cd /usr/local/Modules
$ sudo ln -sT 3.2.10 default

### tcsh, csh automatic modules initialization

A /etc/profile.d/modules.csh symbolic link to the etc/global/profile.modules file in the 3.2.10 modules build directory can enable automatic modules initialization for these users.

## Installing on Linux

### Installing Environment Modules on Linux using yum and rpm

On Scientific Linux, CentOS, and RHEL distributions Environment Modules is in the environment-modules package which can be installed with:

sudo yum install environment-modules

Once installed the package information can be viewed with:

rpm -qi environment-modules
rpm -ql environment-modules

### Installing Environment Modules on Linux using apt and dpkg

On Ubuntu or systems using apt-get, Environment Modules can be installed with:

sudo apt-get install environment-modules

Once installed the package information can be viewed with:

dpkg -L environment-modules

### Installing Environment Modules on Linux from source

Although installing from a Linux distributions repository using that distributions update manager is the easiest the software can be installed from source. Resolve dependencies is the most difficult task for an installation from source. The typical configure, make, install cycle can become painfully slow as each configure improvement reveals another dependency not available in your default environment. This section includes the steps to install the Environment Modules package on source including compiling the Tcl (Tool Command Language) from source as a dependency.

* Installing Environment Modules

#### 8.6.1 version of Tcl (Tool Command Language) built from /usr/local/src

Although the PCLinuxOS 64-bit repositories include Tcl (Tool Command Language) they do not include a development package with the configuration files required to build Environment Modules on Linux from source. Building Tcl from source will make the required files available.

Tcl Source: http://sourceforge.net/projects/tcl/files/Tcl/

Extract source after downloading

cd /usr/local/src
tar -xvzf ~/Downloads/tcl8.6.1-src.tar.gz

Configure, make, install

cd /usr/local/src/tcl8.6.1
unix/configure
make
sudo make install

#### 3.2.10 version of modules built from /usr/local/src

Extract source after downloading

cd /usr/local/src
tar -xvzf ~/Downloads/modules-3.2.10.tar.gz

Configure, make, install

cd /usr/local/src/modules-3.2.10
CPPFLAGS="-DUSE_INTERP_ERRORLINE" ./configure
make
sudo make install

## See also

* Tcl
* Xsede Software Environments. The Extreme Science and Engineering Discovery Environment ― National Science Foundation
* NICS Modules Description ― The National Institute for Computational Sciences at Oak Ridge National Laboratory ― Department of Energy
* Lmod ― Lua-based module system
* Spack ― Package Manager for HPC Software developed at Lawrence Livermore National Laboratory

## References

1. ↑ Furlani, John L. (September 30 – October 3, 1991). "Modules: Providing a Flexible User Environment". Proceedings of the Fifth Large Installation Systems Administration Conference (LISA V) (San Diego, CA): 141–152. http://modules.sourceforge.net/docs/Modules-Paper.pdf. Retrieved 9 February 2014.
2. ↑ "NICS User Support Kraken Modules Description". Oak Ridge National Laboratory - Department of Energy. 22 May 2011. http://www.nics.tennessee.edu/computing-resources/kraken/modules.
3. ↑ "NERSC Modules Software Environment". Office of Science - Department of Energy. 2014-02-07. https://www.nersc.gov/users/software/nersc-user-environment/modules/.
4. ↑ "Use of Modules for Accessing Multiple Versions of Software". DoD High Performance Computing Modernization Program (HPCMP). 20 Mar 2008. http://centers.hpc.mil/consolidated/bc/policies.php?choice=modules.
5. ↑ "DoD High Performance Computing Modernization Program Baseline Configuration". DoD High Performance Computing Modernization Program (HPCMP). http://centers.hpc.mil/consolidated/bc/index.php.
6. ↑ John L. Furlani & Peter W. Osel (July 2009). "modulefile - files containing Tcl code for the Modules package". man page. http://modules.sourceforge.net/man/modulefile.html.
7. ↑ John L. Furlani & Peter W. Osel (July 2009). "module - command interface to the Modules package". man page. http://modules.sourceforge.net/man/module.html.

## External links

1. http://modules.sourceforge.net/ \- home page for the Environment Modules project
2. John L. Furlani, Modules: Providing a Flexible User Environment Proceedings of the Fifth Large Installation Systems Administration Conference (LISA V), pp. 141–152, San Diego, CA, September 30 - October 3, 1991.
3. http://lmod.sourceforge.net \- alternative implementation using LUA instead of Tcl
4. http://www.lysator.liu.se/cmod/ \- alternative implementation using C only
5. PennState Environment Modules User Guide
6. Drag your design environment kicking and screaming into the '90s with Modules! \- SNUB Boston 2001 - Erich Whitney, Axiowave Networks, Mark Sprague, ATI Research

0.00

(0 votes)

|

Retrieved from "https://handwiki.org/wiki/index.php?title=Software:Environment_Modules&oldid=730800"