Gestion de l'environnement Logiciel : La commande Module

A l'occasion du passage du mésocentre IPSL (ClimServ + Ciclad) en Scientific Linux 6 , beaucoup d'outils sont maintenant gérés par la commande module.

Les modules sont utiles dans la gestion des différentes versions des applications, librairies et compilateurs du système. La commande module permet la modification dynamique de l'environnement de l'utilisateur via des fichiers de configuration modulefiles.

Chaque modulefile contient les informations nécessaires pour configurer le Shell pour une application. Une fois le package module initialisé, l'environnement peut être modifiée pour chaque module en utilisant la commande module qui interprète les modulefiles. Les Modulefiles indiquent au module comment modifier ou définir des variables d'environnement du Shell, telles que PATH, MANPATH, etc, afin de définir dynamiquement un nouvel environnement de travail. Les modulefiles peuvent être partagés par plusieurs utilisateurs sur un système et les utilisateurs peuvent avoir leur propre collection pour compléter ou remplacer les modulefiles partagés. 

Les modules peuvent être chargés et déchargés dynamiquement et de façon atomique. Tous les shell populaires sont supportés, y compris bash, ksh, zsh, sh, csh, tcsh, ainsi que des langages de script tels que Perl et Python.

Syntaxe

module (avail [produit] | load produit[/version] | list | switch produit/version1 produit/version2 | display produit[/version] …)
  • ''avail'' : liste les différents produits disponibles et leurs versions,
  • ''load'' : charge le produit dans sa version par défaut (notée default), si aucune version n'est spécifiée,
  • ''list'' : liste les différents produits chargés et leur version,
  • ''switch'' : change la version d'un produit déjà chargé,
  • ''purge" : décharge tous les modules déjà chargés,
  • ''display" : montre le contenu du fichier module.

produit représente au choix :

  • un compilateur,
  • une bibliothèque,
  • une application ou un utilitaire.

version représente les évolutions d'un même produit, elle peut être égale à :

  • default : version par défaut; c'est celle qui est prise si vous ne spécifiez aucune version. Cette version est en général la plus adaptée,
  • numéro : numéro de version complet du type X.Y.Z

Initialisation de la commande module

L'initialisation de module est faite implicitement dans les fichiers d'environnement général. Il n'y a donc rien à positionner pour avoir l'accès à la commandemodule.

Liste des produits disponibles

Vous cherchez un produit spécifique, une version particulière d'une bibliothèque ? L'avons-nous à votre disposition ? Pour répondre à cette question, la commande à exécuter est module avail :

$ module avail
---------------------------------------- /usr/share/Modules/modulefiles ----------------------------------------
dot         module-git  module-info modules     null        use.own
------------------------------------------ /etc/modulefiles/Compilers ------------------------------------------ gnu/4.4.7(default)        nagfor/5.3(default)       pgi/2013(default) intel/12.1.3.293(default) pgi/2011
------------------------------------------ /etc/modulefiles/Libraries ------------------------------------------ hdf5/1.8.10.patch1-gfortran netcdf4/4.2.1.1-ifort openmpi/1.4.5-pgf2011 openmpi/1.6.5-ifort hdf5/1.8.10.patch1-ifort netcdf4/4.2.1.1-pgf2011 openmpi/1.4.5-pgf2011gcc openmpi/1.6.5-pgf2011 hdf5/1.8.10.patch1-pgf2011 netcdf4/4.2.1.1-pgf2013 openmpi/1.4.5-pgf2013 openmpi/1.6.5-pgf2013 hdf5/1.8.10.patch1-pgf2013 openmpi/1.4.5-gfortran openmpi/1.4.5-pgfgcc openmpi/1.6.5-pgfgcc netcdf4/4.2.1.1-gfortran openmpi/1.4.5-ifort openmpi/1.6.5-gfortran
------------------------------------------- /etc/modulefiles/Products ------------------------------------------ cdo/1.6.3(default) idl/8.2 python/2.7.3-epd7 ferret/6.7.2(default) matlab/2010b.sp2 python/2.7.6-canopy-1.3(default) ferret/6.9 matlab/2013b(default) python/3.4.1-anaconda3 gmt/4.5.11(default) ncl/6.1.2(default) R/3.1.1 grads/2.0.2(default) nco/4.3.7(default) scilab/5.4.1(default) idl/6.4(default) nco/4.4.2 scilab/5.5.1

exemples pour la commande module :

$ type pgf90
pgf90 est /opt/pgi-2013/linux86-64/2013/bin/pgf90
$ module load pgi/2011 $ type pgf90 pgf90 est /opt/pgi-2011/linux86-64/2011/bin/pgf90
$ type matlab matlab est /opt/matlab-2013b/matlab
$ module load matlab/2010b.sp2 $ type matlab matlab est /opt/matlab-2010b.sp2/matlab
$ module switch matlab/2013b $ type matlab matlab est /opt/matlab-2013b/matlab
$ module list Currently Loaded Modulefiles:   1) pgi/2011       2) matlab/2013b
$ module purge $ type pgf90 -bash: type: pgf90 : non trouvé $ module list No Modulefiles Currently Loaded.
Dernière mise à jour : ( 06-10-2014 )