Sticky Modules

Sites may wish to mark a module as sticky. This means that if the module is loaded then it won’t be removed with a normal unload or purge. One possible use of sticky modules is where a site wants to define some environment variables that define what the architecture or operating system that allows users to use their system. The reason to make these values sticky is that the system may be difficult to use without these variables set.

Suppose you have a module named “site” that will be sticky. A lua module would look like:

setenv("ARCH","abc")
add_property("lmod","sticky")

A TCL module would look like:

#%Module
setenv ARCH abc
add-property lmod sticky

It is the add_property() function in Lua or add-property command in TCL which makes the module sticky.

If the “site” module is loaded then it can be unloaded by either command:

$ module --force unload site

or:

$ module --force purge

Since a user can unload a sticky module if they really want to. You may wish to the startup scripts (i.e. /etc/profile.d/*) instead of modules to define environment variables that you don’t want users to easily change.

Lmod Implementation

Lmod unloads all requested modules, including the sticky modules. As each module is unloaded it remembers any modules which are sticky. After all modules have been unloaded, Lmod tries to load any sticky modules found from the previous step.