459555f07c
Signed-off-by: Nico Schottelius <nico@kr.ethz.ch>
99 lines
3.1 KiB
Markdown
99 lines
3.1 KiB
Markdown
[[!meta title="Managing custom software with environment modules in the Systems Group"]]
|
|
|
|
## The problem
|
|
|
|
Maintaining custom software as a sysadmin is not easily possible for
|
|
a research group, because ressources needed to do so easily exceed
|
|
the available working time, as soon as the number of software
|
|
installations is getting too big or the software too complex.
|
|
|
|
Researchers on the other hand rely on up-to-date or unpackaged
|
|
software to do their work.
|
|
|
|
## General solution
|
|
|
|
One way to solve this issue is to provide a way researchers can install
|
|
and maintain their own software, without interferring with the system
|
|
software.
|
|
|
|
## Software solution
|
|
|
|
One possible software solution is provided by the
|
|
[Environment Modules Project](http://modules.sourceforge.net/).
|
|
|
|
## Implementation
|
|
|
|
The path **/pub/env-modules** should contain the user maintained
|
|
software and is mounted via **nfs** and **autofs**.
|
|
The Environment Modules Package is installed below
|
|
**/pub/env-modules/Modules**, the files to configure modules
|
|
(**modulefiles**) reside below **/pub/env-modules/modulefiles/**.
|
|
|
|
### Installation of modules
|
|
|
|
The usual three step work fine, if you've tcl installed:
|
|
|
|
modules-3.2.8% ./configure --prefix=/pub/env-modules --with-module-path=/pub/env-modules/modulefiles
|
|
modules-3.2.8% make
|
|
modules-3.2.8% make install
|
|
|
|
## Usage
|
|
|
|
### Creating a new module (sysadmin part)
|
|
|
|
Create a new directory below **/pub/env-modules** and a link
|
|
below **/pub/env-modules/modulefiles/** to the newly created directory.
|
|
Now give ownership to the researcher who is maintaining the new software,
|
|
who can install the software and create a specific modulefile for the
|
|
software. For instance:
|
|
|
|
% mkdir /pub/env-modules/cdist
|
|
% chown nicosc /pub/env-modules/cdist
|
|
|
|
# Delegate support for cdist maintenance into the user owned folder
|
|
% ln -s /pub/env-modules/cdist/modulefiles /pub/env-modules/modulefiles/cdist
|
|
|
|
### Creating a new module (user part)
|
|
|
|
Install the software into your directory and create modulefiles below the
|
|
modulefiles directory:
|
|
|
|
% git clone git://git.schottelius.org/cdist /pub/env-modules/cdist/
|
|
% mkdir /pub/env-modules/cdist/modulefiles
|
|
% cat << eof > /pub/env-modules/cdist/modulefiles/git
|
|
#%Module1.0#####################################################################
|
|
##
|
|
## cdist modulefile
|
|
##
|
|
##
|
|
##
|
|
proc ModulesHelp { } {
|
|
puts stderr "\tLet's you use cdist"
|
|
}
|
|
|
|
module-whatis "Configuration Management"
|
|
|
|
append-path PATH /pub/env-modules/cdist/bin
|
|
eof
|
|
|
|
### Using env modules
|
|
|
|
To actually make use of the new modules, you need to add env modules into your
|
|
shell. The following commands illustrate the way for the **bash**:
|
|
|
|
% . /pub/env-modules/Modules/3.2.8/init/bash
|
|
% module avail
|
|
|
|
----------------------------------- /pub/env-modules/Modules/versions -----------------------------------
|
|
3.2.8
|
|
|
|
------------------------------------- /pub/env-modules/modulefiles --------------------------------------
|
|
cdist/git
|
|
% module load cdist/git
|
|
% module list
|
|
Currently Loaded Modulefiles:
|
|
1) cdist/git
|
|
|
|
|
|
|
|
[[!tag config eth unix]]
|