Installing software in your home directory/fr: Difference between revisions
No edit summary |
(Updating to match new version of source page) |
||
Line 34: | Line 34: | ||
Ceci permet de facilement établir un lien avec une bibliothèque sans devoir en indiquer le chemin avec les options <tt>-I</tt> et <tt>-L</tt>. Si votre fichier ''make''- ou ''config-'' demande l'endroit spécifique où se trouve la bibliothèque avec <tt>-I</tt> et <tt>-L</tt>, vous pouvez habituellement omettre d’indiquer le chemin en laissant les lignes vides. | Ceci permet de facilement établir un lien avec une bibliothèque sans devoir en indiquer le chemin avec les options <tt>-I</tt> et <tt>-L</tt>. Si votre fichier ''make''- ou ''config-'' demande l'endroit spécifique où se trouve la bibliothèque avec <tt>-I</tt> et <tt>-L</tt>, vous pouvez habituellement omettre d’indiquer le chemin en laissant les lignes vides. | ||
In some cases, however, particularly with <tt>cmake</tt>, it may be necessary to specify explicitly the location of the library provided by the | In some cases, however, particularly with <tt>cmake</tt>, it may be necessary to specify explicitly the location of the library provided by the module. The preferred and the most robust way to do so is to use an EasyBuild environment variable, <tt>EBROOT...</tt>, instead of manually typing a path. This will allow you to switch easily between toolchains without modifying the compilation instructions, and will also reduce the risk of linking a mismatched library. For example, if you need to specify the location of the GSL library, the option you provide to <tt>cmake</tt> might look like <tt>-DGSL_DIR=$EBROOTGSL</tt>. The <tt>EBROOT...</tt> environment variables adhere to the same construction pattern: <tt>EBROOT</tt> followed by the name of the package, for example <tt>EBROOTGCC</tt>. | ||
== BLAS/LAPACK et MKL == | == BLAS/LAPACK et MKL == |
Revision as of 17:45, 5 January 2018
La plupart des logiciels utilisés par les chercheurs universitaires sont disponibles gratuitement sur Internet. Vous pouvez demander à Calcul Canada d'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
[name@server ~]$ ./configure
[name@server ~]$ make
[name@server ~]$ 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
[name@server ~]$ ./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.
Utiliser les bibliothèques
Le moyen le plus simple pour utiliser une bibliothèque est habituellement de charger d'abord le module correspondant avec
[name@server ~]$ module load library_name/x.y.z
Une fois le module chargé, vous pouvez modifier les liens établis au cours du processus de build pour inclure la bibliothèque, par exemple
[name@server ~]$ gcc -o my_prog file1.o file2.o -lnetcdf
pour lier avec la bibliothèque NetCDF.
Sur la ligne pour le lien, le nom de la bibliothèque doit être préfixé par -l; il s'agit d'un fichier de type .a ou .so. Vous trouverez dans la documentation relative à la bibliothèque le nom de ce fichier et l'ordre dans lequel les liens doivent être établis dans les cas où vous avez plusieurs de ces fichiers. Le module pour la bibliothèque doit être chargé pour effectuer le build, mais aussi pour exécuter l'application compilée à l'aide de la bibliothèque.
Le module pour la bibliothèque doit être chargé pour effectuer le build, mais aussi pour exécuter l'application compilée à l'aide de la bibliothèque.
Le chargement du module d'une bibliothèque configure les variables d'environnement CPATH et LIBRARY_PATH pour qu'elles pointent sur la bibliothèque elle-même et ses fichiers d’en-tête (voir Utiliser des modules). La plupart des compilateurs, dont Intel et GCC peuvent traiter ces variables; aux étapes de compilation et de construction des liens, les compilateurs iront automatiquement aux bibliothèques indiquées par les variables d'environnement. Ceci permet de facilement établir un lien avec une bibliothèque sans devoir en indiquer le chemin avec les options -I et -L. Si votre fichier make- ou config- demande l'endroit spécifique où se trouve la bibliothèque avec -I et -L, vous pouvez habituellement omettre d’indiquer le chemin en laissant les lignes vides.
In some cases, however, particularly with cmake, it may be necessary to specify explicitly the location of the library provided by the module. The preferred and the most robust way to do so is to use an EasyBuild environment variable, EBROOT..., instead of manually typing a path. This will allow you to switch easily between toolchains without modifying the compilation instructions, and will also reduce the risk of linking a mismatched library. For example, if you need to specify the location of the GSL library, the option you provide to cmake might look like -DGSL_DIR=$EBROOTGSL. The EBROOT... environment variables adhere to the same construction pattern: EBROOT followed by the name of the package, for example EBROOTGCC.
BLAS/LAPACK et MKL
Pour plusieurs paquets logiciels, les bibliothèques 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 bibliothèque 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 bibliothèques 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 bibliothèques 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.
Installer des paquets binaires
L'installation de binaires précompilés (tels que Miniconda) dans votre espace home pourrait générer une erreur comme /lib64/libc.so.6: version `GLIBC_2.18' not found
. Le script setrpaths.sh
peut souvent éliminer ce problème avec la syntaxe setrpaths.sh --path path [--add_origin]
où path représente le répertoire dans lequel vous avez installé le logiciel. Le script fait en sorte que les binaires utilisent le bon interpréteur et trouvent les bibliothèque auxquelles ils sont dynamiquement liés, dans le bon répertoire. L'option --add_origin
ajoute aussi $ORIGIN au RUNPATH, ce qui peut s'avérer utile si la bibliothèque est incapable de trouver d'autres bibliothèques dans le répertoire où elle est située.
L'environnement logiciel 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 typiquement installés dans /usr/bin
, /usr/include
et ainsi de suite, alors que dans notre cas, ils sont installés 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 dont 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 bibliothèques à 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 bibliothèque provenant d'un module autre que nixpkgs
, vous devrez peut-être spécifier où se trouvent les fichiers entête et les bibliothèques du module. Ces autres modules ont aussi une variable d'environnement commençant par EBROOT et se terminant par le nom du module en majuscules. Par exemple, après avoir exécuté la commande module load hdf5
, son installation se trouvera dans $EBROOTHDF5
, ses fichiers d'entête dans $EBROOTHDF5/include
, ses fichiers de bibliothèque dans $EBROOTHDF5/lib
et ainsi de suite.
Si un fichier entête ou une bibliothèque 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 bibliothèques 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. - En dernier recours, utilisez
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 de compilation 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.