Home

ITA - Come usare environment-modules

linux dev

Introduzione

I file di modulo sono file scritti nel linguaggio di comando degli strumenti Tcl e vengono utilizzati dal comando module per caricare ambienti diversi a seconda delle applicazioni o librerie necessarie.

Ogni volta che un utente su un sistema basato su Unix/Linux esegue applicazioni, la compilazione di un codice, ecc; ciò che l’utente può fare con successo è determinato dall’ambiente di shell corrente.

L’esempio più comune di questo concetto è la variabile d’ambiente PATH. Quando un utente digita un comando, a tale comando viene fatto riferimento da un nome percorso completo: ad es. /usr/bin/some_dir/another_dir/command_utility o il percorso deve essere specificato nell’ambiente shell PATH dell’utente.

Un altro esempio è quando un particolare utente compila il codice di un’applicazione, spesso diverse librerie devono essere accessibili tramite variabili di ambiente della shell che indirizzano il compilatore su dove cercare (ad esempio LD_LIBRARY_PATH).

Installazione

Debian/ubuntu

sudo apt-get install environment-modules

Fedora

sudo dnf install environment-modules

Configurazione

Il percorso dei propi moduli può essere controllato tramite la variabile d’ambiente : MODULEPATH

Un buon modo per settata è definirla file ~/.bashrc nel seguente modo :

source /etc/profile.d/modules.sh
export MODULEPATH=~/.local/modulefiles:$MODULEPATH

La cartella

~/.local/modulefiles

contiene i file di modulo personali, ovviamente può essere gestita anche a livello di sistema.

Comandi utili

Elenca i moduli caricati

module list

Carica un modulo

module load <module>

Elenca i moduli disponibili

module avail

Rimuove un modulo caricato

module rm <module>

Rimuove tutti i moduli caricati

module purge

Esempio di file di modulo

#%Module1.0#####################################################################
##
## module modulefile
##

proc ModulesHelp { } {
        global version

        puts stderr "\tSets up environment for GCC v$version,"
        puts stderr "\tprovided by <user> \n"
}

module-whatis   "sets up environment for <module>"


# dichiara delle variabile da usare dentro lo script
set     version 7.3.1
set     basepath    /opt/tool

# carica dei moduli prerequisiti
prereq <other-module>

# esempi per aggiungere a percorsi a gruppi di paht
prepend-path	INFOPATH	$root/usr/share/info
prepend-path	LD_LIBRARY_PATH	$root/usr/lib64:$root/usr/lib:$root/usr/lib64/dyninst:$root/usr/lib/dyninst
prepend-path	MANPATH		$root/usr/share/man
prepend-path	PATH		$root/usr/bin
prepend-path	PYTHONPATH	$root/usr/lib64/python2.7/site-packages:$root/usr/lib/python2.7/site-packages

# definire delle vatiabili d'abiente
setenv		PCP_DIR		$root
setenv		PERL5LIB	$root/usr/lib64/perl5/vendor_perl:$root/usr/lib/perl5

# definire un conflitto
conflict <module-group>
# un gruppo si crea creando una cartella dentro il MODULEPATH

Riferimenti