Projet

Général

Profil

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:

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