Using the Software Stack
Chinook already has builds of many third-party software packages (see below for a listing). There are often multiple builds of a particular software package - different versions, different compilers used to build the software, different compile-time flags, et cetera. To avoid conflicts between these many disparate package builds, Chinook employs an environment module system you can use to load and unload different combinations of software packages into your environment.
The environment modules found on Chinook (often referred to simply as "modules") are Tcl script files that are used to update shell environment variables such as
PATH
, MANPATH
, and LD_LIBRARY_PATH
. These variables allow your shell to discover the particular application or library as specified by the module. Some environment modules set additional variables (such as PYTHONPATH
or PERL5LIB
), while others simply load a suite of other modules.Command | Result |
module avail | list all available modules |
module avail pkg | list all available modules beginning with the string pkg |
module load pkg | load a module named pkg |
module swap oldnew | attempt to replace loaded module named old with one named new |
module unload pkg | unload a module named pkg |
module list | list all currently-loaded modules |
module purge | unload all modules |
module show pkg | summarize environment changes made by module named pkg(sometimes incomplete) |
Because
module avail
will search for the provided string only at the beginning of a module's fully-qualified name, it can be difficult to use module avail
to search for modules nested in any kind of hierarchy. This is the case on Chinook - modules are categorized, then named. Here are some examples:compiler/GCC/
version
devel/CMake/
version
math/GMP/
version
To find modules for GCC using a pure
module avail
command, you would need to run module avail compiler/GCC
. This is difficult, because you must already know that the module is in the compiler category.To make things more complicated,
module avail
is also case-sensitive. Running module avail devel/cmake
will not find the module named devel/CMake/
version
.One workaround for these impediments is to combine
module avail
output with grep
's full-text case-insensitive string matching ability. The example below additionally uses Bash file descriptor redirection syntax to redirect stderr to stdout because module avail
outputs to stderr.module avail 2>&1 | grep -i pkg
replacing pkg with the string you are searching for.
RCS is currently evaluating Lmod as a replacement for Chinook's current environment modules framework. Lmod has many desirable features, including but not limited to a more user-friendly
module avail
behavior.For more information on Chinook's module framework, please visit http://modules.sourceforge.net/index.html.