Le concept¶
Dans un premier temps vous devez avoir installé l'application dans un répertoire de votre home (appelé également répertoire personnel et dont le raccourci est ~).
Prenons par exemple le répertoire d'installation ~/programmes/nom_de_mon_application/version_de_mon_application.
Admettons que l'exécutable se trouve donc dans le répertoire:
~/programmes/nom_de_mon_application/version_de_mon_application/bin
et qu'il se nomme monappli. Admettons également que les librairies dynamiques dont se sert l'exécutable soient dans le répertoire:
~/programmes/nom_de_mon_application/version_de_mon_application/lib avec le nom libneeded.so et libneedmetoo.so .
J'ai donc l'arborescence suivante:
paurel@poaurel:~$ tree ~/programmes/ /home/paurel/programmes/ └── nom_de_mon_application └── version_de_mon_application ├── bin │ └── monappli └── lib └── libneeded.so 4 directories, 2 files
Si je ne modifie pas mon environnement lorsque je tape la commande monappli, le système me dit qu'il ne trouve pas cette application: "commande introuvable". En effet pour trouver les applications le système cherche dans une liste de répertoires. Cette liste se trouve dans une variable d’environnement qui s'appelle PATH. on peut la voir en tapant : echo $PATH
paurel@poaurel:~$ echo $PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/usr/local/java/latest/bin
C'est une liste ordonnée de répertoires, séparés par des ":"
Pour trouver une application le système parcourt cette liste et prend le premier fichier exécutable de même nom qu'il trouve (d'où l'importance de l'ordre dans la liste).
Le module aura pour premier objectif de modifier cette variable en fonction du programme que nous voulons utiliser.
Création du modulefile¶
Il faut que vous ayez déjà chargé le module use.own à l'aide de la commande : module load use.own, et que le module ait créé le répertoire ~/.privatemodules qui sert de base à vos modules personnels.
Il nous faut alors créer un répertoire pour notre application. Comme j'aime les choses simples, je nomme ce répertoire nom_de_mon_application et je le crée avec la commande: mkdir ~/.privatemodules/nom_de_mon_application.
Maintenant, il faut créer le fichier modulefile qui correspond à la version de mon application. A l'aide de mon éditeur préféré, je crée un fichier version_de_mon_application dans le répertoire ~/.privatemodules/nom_de_mon_application
La première étape dans un module est de fournir sa signature (cf https://modules.readthedocs.io/en/latest/modulefile.html).
La première ligne de mon fichier sera donc :
#%Module 3.2
Pour modifier le PATH deux méthodes s'offrent à nous:
- prepend-path si on veut ajouter le chemin en premier.
- append-path si on veut ajouter le chemin en dernier.
Dans notre cas, comme nous voulons être sûrs que ce soit le chemin de notre application qui sera choisi par le système, nous utiliserons prepend-path afin de le mettre en premier.
La deuxième ligne sera donc :
prepend-path PATH ~/programmes/nom_de_mon_application/version_de_mon_application/bin
Maintenant, lorsque je fait un module avail, je dois voir apparaître mon module dans la rubrique private module.
paurel@poaurel:~$ module avail ------------------------ /usr/share/modules/modulefiles ------------------------ dot module-git null python/2.7.8 use.own intel/11.1.072 module-info python/2.5.2 python/3.6.4 intel/2013.1.117 modules python/2.6.6 tcl_tk/8.6.10 ------------------------- /home/paurel/privatemodules -------------------------- nom_de_mon_application/version_de_mon_application
Chargeons le module avec la commande :
module load nom_de_mon_application/version_de_mon_application
La commande est trouvée car la variable PATH contient /home/paurel/programmes/nom_de_mon_application/version_de_mon_application/bin comme premier chemin.
paurel@poaurel:~$ echo $PATH /home/paurel/programmes/nom_de_mon_application/version_de_mon_application/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/usr/local/java/latest/bin
La commande which affiche l'exécutable choisi par le système avec son chemin. Elle pourra vous être utile pour vérifier que l'exécutable trouvé est le bon.
Erreurs¶
Si vous rencontrez des soucis, trouvez une coquille ou une erreur, avez une tournure de phrase que vous trouvez beaucoup moins lourde,...etc faites m'en part afin que j'en fasse profiter les autres et que ce texte soit amélioré, envoyez un mail à l'auteur