Installing software in your home directory/fr: Difference between revisions

From Alliance Doc
Jump to navigation Jump to search
(Created page with "Si un fichier entête ou une librairie habituellement offert dans une distribution de type Linux par un RPM ou autre gestionnaire de paquets ne se trouve ni par <code>nixpkgs<...")
(Created page with "'''Notes''' * tous les binaires sous <code>/cvmfs/soft.computecanada.ca</code> utilisent un RUNPATH; les répertoires des librairies d'exécution desquels dépendent ces bina...")
Line 41: Line 41:
Si un fichier entête ou une librairie habituellement offert dans une distribution de type Linux par un RPM ou autre gestionnaire de paquets ne se trouve ni par <code>nixpkgs</code>, ni par un autre module, veuillez nous en informer; nous pourrons très probablement l'ajouter.
Si un fichier entête ou une librairie habituellement offert dans une distribution de type Linux par un RPM ou autre gestionnaire de paquets ne se trouve ni par <code>nixpkgs</code>, ni par un autre module, veuillez nous en informer; nous pourrons très probablement l'ajouter.


Notes:
'''Notes'''
* all binaries under <code>/cvmfs/soft.computecanada.ca</code> use what is called a RUNPATH, which means that the directories for the runtime libraries that these binaries depend on are put inside the binary. That means it is generally *not* necessary to use <code>$LD_LIBRARY_PATH</code>. In fact, <code>$LD_LIBRARY_PATH</code> overrides this runpath and you should '''not''' set that environment variable to locations such as <code>/usr/lib64</code> or <code>$EBROOTNIXPKGS/lib</code>. Many binaries will no longer work if you attempt this.
 
* if you install precompiled binaries in your home directory (for example [https://conda.io/miniconda.html Miniconda]) they may fail using errors such as <code>/lib64/libc.so.6: version `GLIBC_2.18' not found</code>. Often such binaries can be patched using our <code>setrpaths.sh</code> script, using the syntax <code>setrpaths.sh --path path [--add_origin]</code> where path refers to the directory where you installed that software. This script will make sure that the binaries use the correct interpreter, and search for the libraries they are dynamically linked to in the correct folder. The option <code>--add_origin</code> will also add $ORIGIN to the RUNPATH. This is sometimes helpful if the library cannot find other libraries in the same folder as itself.
* tous les binaires sous <code>/cvmfs/soft.computecanada.ca</code> utilisent un RUNPATH; les répertoires des librairies d'exécution desquels dépendent ces binaires sont placés dans le binaire. Il n'est donc pas nécessaire d'utiliser <code>$LD_LIBRARY_PATH</code>. En fait, <code>$LD_LIBRARY_PATH</code> a préséance sur le RUNPATH et cette variable d'environnement ne devrait pas se trouver dans des endroits comme <code>/usr/lib64</code> ou <code>$EBROOTNIXPKGS/lib</code>. Si vous procédez ainsi, plusieurs binaires ne fonctionneront pas.
* if all else fails you can use <code>module --force purge</code> to remove the CVMFS environment. You are then left with a bare-bones CentOS-7 installation without modules. This may help for special situations such as compiling GCC yourself or using custom toolchains such as the [http://www.astro.wisc.edu/~townsend/static.php?ref=mesasdk MESA SDK]. Purging modules would then '''only''' be necessary when you compile such software; the modules can be reloaded when running it.
* si vous installez des binaires précompilés dans votre répertoire home (par exemple [https://conda.io/miniconda.html Miniconda]), vous pourriez recevoir une erreur telle que <code>/lib64/libc.so.6: version `GLIBC_2.18' not found</code>. Ces binaires peuvent souvent être réparés avec le script <code>setrpaths.sh</code> en utilisant la syntaxe <code>setrpaths.sh --path path [--add_origin]</code> path désigne le répertoire où vous avez installé le logiciel. Ce script fait en sorte que les binaires utilisent le bon interpréteur et cherche les librairies auxquelles ils sont dynamiquement liés dans le répertoire approprié. L'option code>--add_origin</code> ajoute aussi $ORIGIN au RUNPATH,  ce qui peut s'avérer utile si la librairie ne peut trouver d'autres librairies situées dans le même répertoire qu'elle-même.
* en dernier recours, utilisez code>module --force purge</code> pour éliminer l'environnement CVMFS. Vous obtiendrez ainsi une installation CentOS-7 brute, sans modules. Ceci peut servir dans des cas spéciaux où vous compilez GCC par vous-même ou quand vous utilisez des chaines d'outils comme [http://www.astro.wisc.edu/~townsend/static.php?ref=mesasdk MESA SDK]. Il ne serait nécessaire de purger des modules qu'à la compilation et ils peuvent être chargés à nouveau au lancement du logiciel.

Revision as of 19:19, 14 July 2017

Other languages:

La plupart des logiciels utilisés par les chercheurs universitaires sont disponibles gratuitement sur Internet. Vous pouvez demander à Calcul Canada s'installer de tels logiciels que vous pourrez ensuite utiliser avec la commande module load (voir Utiliser les modules); pour ce faire, écrivez à support@calculcanada.ca en joignant l'adresse URL pour l'installation. Si les clauses de la licence et les exigences techniques le permettent, le logiciel sera habituellement disponible dans 24 à 48 heures ouvrables.

Vous avez le droit d'installer des logiciels dans votre propre espace projet ou dans votre espace home, par exemple pour

  • apporter vous-même des modifications au code
  • évaluer un produit avant le temps alloué pour l'installation par notre équipe (24 à 48 heures ouvrables).

Prenez connaissance des directives pour l'installation du logiciel. Il s'agit souvent des instructions décrites ci-après.

configure; make; make install

 
 [nom@serveur ~]$ ./configure
 [nom@serveur ~]$ make
 [nom@serveur ~]$ make install
 

Cette syntaxe de commande est fréquemment utilisée, avec des variantes telles cmake . au lieu de ./configure et sudo make install au lieu de make install.

Ces instructions fonctionnent comme prévu à l'occasion, mais make install crée quelquefois un obstacle car le logiciel s'attend à pouvoir écrire dans /usr/local ou autre espace partagé du système de fichiers. La commande sudo make install causera toujours l'arrêt de la procédure parce que sudo exige les permissions d'administrateur (root). La solution consiste à placer un indicateur --prefix à l'étape configure pour que l'installation soit dirigée vers le répertoire de votre choix, par exemple

Question.png
[nom@serveur ~]$ ./configure --prefix=/my/project/directory/some-package && make && make install

Si d'autres erreurs surviennent, contactez support@calculcanada.ca. Pour les détails, consultez les pages Make, Autotools et CMake.

BLAS/LAPACK et MKL

Pour plusieurs paquets logiciels, les librairies d'algèbre linéaire numérique BLAS ( -lblas) et LAPACK (-llapack) doivent être disponibles, ce qui n'est pas le cas pour les grappes de Calcul Canada puisque ces librairies sont intégrées à Math Kernel Library (MKL) d'Intel. Si vous utilisez un des compilateurs Intel (par exemple ifort, icc ou icpc), la solution est simple : il suffit d'ajouter au compilateur l'indicateur -mkl=sequential (sans parallélisation MKL interne) ou -mkl (avec parallélisation) ainsi que les options d’édition des liens pour faire en sorte que MKL et BLAS/LAPACK soient utilisés. Pour plus d'information, voyez Using the -mkl Compiler Option. Avec les compilateurs autres que ceux d'Intel, par exemple ceux de la collection Gnu, vous devrez lister explicitement les librairies MKL à l'étape des liens; vous pouvez utiliser l'outil d'Intel pour construire la syntaxe (voir Intel MKL Link Line Advisor).

apt-get et yum

Si le logiciel fait appel à apt-get ou yum, il est peu probable que vous puissiez l'installer avec ces instructions. Repérez les instructions to build from source ou contactez le soutien technique.

Paquets Python, R et Perl

Les langages Python, R, et Perl offrent d'importantes librairies d'extensions; presque toutes peuvent être facilement installées dans votre répertoire home. Consultez les pages Python, R et Perl pour savoir si le paquet dont vous avez besoin est disponible; si ce n'est pas le cas, vous trouverez aussi dans cette documentation l'information nécessaire pour l’installer par vous-même.

La pile logicielle de Calcul Canada

Le système de fichiers CVFMS (shared software distribution system) rend presque tous les logiciels disponibles sur les nouvelles grappes. Sous Linux, les logiciels seraient installés dans /usr/bin, /usr/include et ainsi de suite, alors que dans notre cas, ils sont installées de manière identique sur toutes les nouvelles grappes sous /cvmfs/soft.computecanada.ca.

Le module nixpkgs/16.09 est chargé par défaut et agit comme cœur pour la pile logicielle gérée par le gestionnaire de paquets Nic situé sous /cvmfs/soft.computecanada.ca/nix/var/nix/profiles/16.09.

Indiquez ce chemin avec la variable d'environnement $EBROOTNIXPKGS. À cet endroit se trouvent tous les paquets usuels fournis dans un environnement Linux, par make, ls, cat, grep. À la compilation d'un logiciel, le compilateur et l'éditeur de liens cherchent typiquement les fichiers d'entête et les librairies à l'endroit approprié (avec les variables d'environnement $CPATH et $LIBRARY_PATH respectivement).

Cependant, dans le cas de certains logiciels, /usr est explicitement indiqué; si c'est le cas, la compilation s'arrête et vous devrez spécifier $EBROOTNIXPKGS. Il faudra quelquefois ajuster un Makefile, passer un indicateur --with- via le script de compilation ou éditer un fichier de configuration. Si vous ne savez pas comment procéder, contactez le soutien technique.

De la même manière, si un paquet dépend d'une librairie provenant d'un module autre que nixpkgs, vous devrez peut-être spécifier où se trouvent les fichiers entête et les librairies du module. La norme EBROOT s'applique à tous les modules; la librairie HDF5 par exemple est installée dans $EBROOTHDF5, et ses sous-répertoires include et lib sont installés à l’exécution de module load hdf5.

Si un fichier entête ou une librairie habituellement offert dans une distribution de type Linux par un RPM ou autre gestionnaire de paquets ne se trouve ni par nixpkgs, ni par un autre module, veuillez nous en informer; nous pourrons très probablement l'ajouter.

Notes

  • tous les binaires sous /cvmfs/soft.computecanada.ca utilisent un RUNPATH; les répertoires des librairies d'exécution desquels dépendent ces binaires sont placés dans le binaire. Il n'est donc pas nécessaire d'utiliser $LD_LIBRARY_PATH. En fait, $LD_LIBRARY_PATH a préséance sur le RUNPATH et cette variable d'environnement ne devrait pas se trouver dans des endroits comme /usr/lib64 ou $EBROOTNIXPKGS/lib. Si vous procédez ainsi, plusieurs binaires ne fonctionneront pas.
  • si vous installez des binaires précompilés dans votre répertoire home (par exemple Miniconda), vous pourriez recevoir une erreur telle que /lib64/libc.so.6: version `GLIBC_2.18' not found. Ces binaires peuvent souvent être réparés avec le script setrpaths.sh en utilisant la syntaxe setrpaths.sh --path path [--add_origin] où path désigne le répertoire où vous avez installé le logiciel. Ce script fait en sorte que les binaires utilisent le bon interpréteur et cherche les librairies auxquelles ils sont dynamiquement liés dans le répertoire approprié. L'option code>--add_origin ajoute aussi $ORIGIN au RUNPATH, ce qui peut s'avérer utile si la librairie ne peut trouver d'autres librairies situées dans le même répertoire qu'elle-même.
  • en dernier recours, utilisez code>module --force purge pour éliminer l'environnement CVMFS. Vous obtiendrez ainsi une installation CentOS-7 brute, sans modules. Ceci peut servir dans des cas spéciaux où vous compilez GCC par vous-même ou quand vous utilisez des chaines d'outils comme MESA SDK. Il ne serait nécessaire de purger des modules qu'à la compilation et ils peuvent être chargés à nouveau au lancement du logiciel.