Aller au contenu principal

Installer un logiciel

Sur cette version 2025 de ROMEO il est maintenant possible d'installer par vous même de nombreux logiciels dans de nombreuses versions sur le supercalculateur.


Avant d'installer un logiciel vous pouvez vérifier qu'il n'est pas déjà disponible avec la commande spack find décrite dans le chapitre précédant. Si vous souhaitez installer un logiciel qui sera à priori utilisé par de nombreux utilisateurs, ou que vous avez besoin que plusieurs utilisateurs utilise exactement la même installation d'un logiciel, vous pouvez faire une demande d'installation de logiciel à l'équipe technique ROMEO via le système de ticket (lien disponible sur le portail).


Lister les logiciels disponibles pour l'installation sur ROMEO

La commande spack list va vous afficher la liste complète des logiciels disponibles à l'installation :

spack list

3dtk                                            py-flatbuffers
3proxy py-flatten-dict
7zip py-flawfinder
abacus py-flax
abduco py-flexmock
abi-compliance-checker py-flexx
abi-dumper py-flit
abinit py-flit-core
abseil-cpp py-flit-scm
abyss py-flufl-lock
accfft py-fluiddyn
acct py-fluidfft
accumulo py-fluidfft-builder
ace py-fluidfft-fftw
acfl py-fluidfft-fftwmpi
ack py-fluidfft-mpi-with-fftw
acl py-fluidfft-p3dfft
acpica-tools py-fluidfft-pfft
acpid py-fluidsim
activeharmony py-fluidsim-core
activemq py-flye
acts py-fn-py
acts-algebra-plugins py-folium
acts-dd4hep py-fonttools
actsvg py-ford
additivefoam py-formatizer
addrwatch py-formulaic
adept py-fortls
adept-utils py-fortran-language-server
[...]

Vous pouvez rechercher dans cette liste, par exemple pour gromacs :

spack list gromacs

gromacs  gromacs-chain-coordinate  gromacs-swaxs  py-biobb-gromacs
==> 4 packages

Vous pouvez également rechercher des mots clés directement dans la description des logiciels :

spack list --search-description gromacs (cette commande est longue à exécuter)

ermod    gromacs-chain-coordinate  py-biobb-gromacs  py-mdanalysis  py-pyedr
gromacs gromacs-swaxs py-gmxapi py-panedr py-simpletraj
==> 10 packages

Connaitre les versions et options disponibles pour un logiciel

Il est possible de connaitre toutes les versions et options qui sont à votre disposition pour chaque logiciels pour les installer. Par exemple pour gromacs :

spack info gromacs

CMakePackage:   gromacs

Description:
GROMACS is a molecular dynamics package primarily designed for
simulations of proteins, lipids and nucleic acids. It was originally
developed in the Biophysical Chemistry department of University of
Groningen, and is now maintained by contributors in universities and
research centers across the world. GROMACS is one of the fastest and
most popular software packages available and can run on CPUs as well as
GPUs. It is free, open source released under the GNU Lesser General
Public License. Before the version 4.6, GROMACS was released under the
GNU General Public License.

Homepage: https://www.gromacs.org

Preferred version:
2024.3 https://ftp.gromacs.org/gromacs/gromacs-2024.3.tar.gz

Safe versions:
main [git] https://gitlab.com/gromacs/gromacs.git on branch main
2024.3 https://ftp.gromacs.org/gromacs/gromacs-2024.3.tar.gz
2024.2 https://ftp.gromacs.org/gromacs/gromacs-2024.2.tar.gz
2024.1 https://ftp.gromacs.org/gromacs/gromacs-2024.1.tar.gz
2024 https://ftp.gromacs.org/gromacs/gromacs-2024.tar.gz
2023.5 https://ftp.gromacs.org/gromacs/gromacs-2023.5.tar.gz
2023.4 https://ftp.gromacs.org/gromacs/gromacs-2023.4.tar.gz
2023.3 https://ftp.gromacs.org/gromacs/gromacs-2023.3.tar.gz
2023.2 https://ftp.gromacs.org/gromacs/gromacs-2023.2.tar.gz
2023.1 https://ftp.gromacs.org/gromacs/gromacs-2023.1.tar.gz
2023 https://ftp.gromacs.org/gromacs/gromacs-2023.tar.gz
2022.6 https://ftp.gromacs.org/gromacs/gromacs-2022.6.tar.gz
2022.5 https://ftp.gromacs.org/gromacs/gromacs-2022.5.tar.gz
2022.4 https://ftp.gromacs.org/gromacs/gromacs-2022.4.tar.gz
2022.3 https://ftp.gromacs.org/gromacs/gromacs-2022.3.tar.gz
2022.2 https://ftp.gromacs.org/gromacs/gromacs-2022.2.tar.gz
2022.1 https://ftp.gromacs.org/gromacs/gromacs-2022.1.tar.gz
2022 https://ftp.gromacs.org/gromacs/gromacs-2022.tar.gz
2021.7 https://ftp.gromacs.org/gromacs/gromacs-2021.7.tar.gz
2021.6 https://ftp.gromacs.org/gromacs/gromacs-2021.6.tar.gz
2021.5 https://ftp.gromacs.org/gromacs/gromacs-2021.5.tar.gz
2021.4 https://ftp.gromacs.org/gromacs/gromacs-2021.4.tar.gz
2021.3 https://ftp.gromacs.org/gromacs/gromacs-2021.3.tar.gz
2021.2 https://ftp.gromacs.org/gromacs/gromacs-2021.2.tar.gz
2021.1 https://ftp.gromacs.org/gromacs/gromacs-2021.1.tar.gz
2021 https://ftp.gromacs.org/gromacs/gromacs-2021.tar.gz
2020.7 https://ftp.gromacs.org/gromacs/gromacs-2020.7.tar.gz
2020.6 https://ftp.gromacs.org/gromacs/gromacs-2020.6.tar.gz
2020.5 https://ftp.gromacs.org/gromacs/gromacs-2020.5.tar.gz
2020.4 https://ftp.gromacs.org/gromacs/gromacs-2020.4.tar.gz
2020.3 https://ftp.gromacs.org/gromacs/gromacs-2020.3.tar.gz
2020.2 https://ftp.gromacs.org/gromacs/gromacs-2020.2.tar.gz
2020.1 https://ftp.gromacs.org/gromacs/gromacs-2020.1.tar.gz
2020 https://ftp.gromacs.org/gromacs/gromacs-2020.tar.gz
2019.6 https://ftp.gromacs.org/gromacs/gromacs-2019.6.tar.gz
2019.5 https://ftp.gromacs.org/gromacs/gromacs-2019.5.tar.gz
2019.4 https://ftp.gromacs.org/gromacs/gromacs-2019.4.tar.gz
2019.3 https://ftp.gromacs.org/gromacs/gromacs-2019.3.tar.gz
2019.2 https://ftp.gromacs.org/gromacs/gromacs-2019.2.tar.gz
2019.1 https://ftp.gromacs.org/gromacs/gromacs-2019.1.tar.gz
2019 https://ftp.gromacs.org/gromacs/gromacs-2019.tar.gz
2018.8 https://ftp.gromacs.org/gromacs/gromacs-2018.8.tar.gz
2018.5 https://ftp.gromacs.org/gromacs/gromacs-2018.5.tar.gz
2018.4 https://ftp.gromacs.org/gromacs/gromacs-2018.4.tar.gz
2018.3 https://ftp.gromacs.org/gromacs/gromacs-2018.3.tar.gz
2018.2 https://ftp.gromacs.org/gromacs/gromacs-2018.2.tar.gz
2018.1 https://ftp.gromacs.org/gromacs/gromacs-2018.1.tar.gz
2018 https://ftp.gromacs.org/gromacs/gromacs-2018.tar.gz
2016.6 https://ftp.gromacs.org/gromacs/gromacs-2016.6.tar.gz
2016.5 https://ftp.gromacs.org/gromacs/gromacs-2016.5.tar.gz
2016.4 https://ftp.gromacs.org/gromacs/gromacs-2016.4.tar.gz
2016.3 https://ftp.gromacs.org/gromacs/gromacs-2016.3.tar.gz
5.1.5 https://ftp.gromacs.org/gromacs/gromacs-5.1.5.tar.gz
5.1.4 https://ftp.gromacs.org/gromacs/gromacs-5.1.4.tar.gz
5.1.2 https://ftp.gromacs.org/gromacs/gromacs-5.1.2.tar.gz
4.6.7 https://ftp.gromacs.org/gromacs/gromacs-4.6.7.tar.gz
4.5.5 https://ftp.gromacs.org/gromacs/gromacs-4.5.5.tar.gz

Deprecated versions:
master [git] https://gitlab.com/gromacs/gromacs.git on branch main

Variants:
build_system [cmake] cmake
Build systems supported by the package
build_type [Release] Debug, MinSizeRel, Profile, Reference, RelWithAssert,
RelWithDebInfo, Release
The build type to build
cp2k [false] false, true
CP2K QM/MM interface integration
cuda [false] false, true
Build with CUDA
cycle_subcounters [false] false, true
Enables cycle subcounters
double [false] false, true
Produces a double precision version of the executables
hwloc [true] false, true
Use the hwloc portable hardware locality library
intel_provided_gcc [false] false, true
Use this if Intel compiler is installed through spack.The g++ location is written to icp{c,x}.cfg
mdrun_only [false] false, true
Enables the build of a cut-down version of libgromacs and/or the mdrun program
mpi [true] false, true
Activate MPI support (disable for Thread-MPI support)
nosuffix [false] false, true
Disable default suffixes
opencl [false] false, true
Enable OpenCL support
openmp [true] false, true
Enables OpenMP at configure time
openmp_max_threads [none] none
Max number of OpenMP threads
relaxed_double_precision [false] false, true
GMX_RELAXED_DOUBLE_PRECISION, use only for Fujitsu PRIMEHPC
shared [true] false, true
Enables the build of shared libraries

when +cuda
cuda_arch [none] none, 10, 11, 12, 13, 20, 21, 30, 32, 35, 37, 50, 52, 53, 60, 61,
62, 70, 72, 75, 80, 86, 87, 89, 90, 90a
CUDA architecture

when build_system=cmake
generator [make] none
the build system generator to use

when build_system=cmake ^cmake@3.9:
ipo [false] false, true
CMake interprocedural optimization

when @2022:+cuda+mpi
cufftmp [false] false, true
Enable multi-GPU FFT support with cuFFTMp

when @2021:+mpi+sycl
heffte [false] false, true
Enable multi-GPU FFT support with HeFFTe

when @2021:
nblib [true] false, true
Build and install the NB-LIB C++ API for GROMACS
sycl [false] false, true
Enable SYCL support

when @2022:+sycl
intel-data-center-gpu-max [false] false, true
Enable support for Intel Data Center GPU Max

when @2019:
gmxapi [true] false, true
Build and install the gmxlib python API for GROMACS

when @2024:+cuda+mpi
nvshmem [false] false, true
Enable NVSHMEM support for Nvidia GPUs

when arch=None-None-neoverse_v1:,neoverse_v2:
sve [true] false, true
Enable SVE on aarch64 if available

when arch=None-None-a64fx
sve [true] false, true
Enable SVE on aarch64 if available

when @2016.5:2016.6,2018.4,2018.6,2018.8,2019.2,2019.4,2019.6,2020.2,2020.4:2020.7,=2021,2021.4:2021.7,2022.3,2022.5,=2023
plumed [false] false, true
Enable PLUMED support

Build Dependencies:
blas cp2k fftw-api gmake hwloc mpi nvhpc plumed
cmake cuda gcc heffte lapack ninja pkgconfig sycl

Link Dependencies:
blas cp2k cuda fftw-api gcc heffte hwloc lapack mpi nvhpc plumed sycl

Run Dependencies:
None

Licenses:
GPL-2.0-or-later@:4.5
LGPL-2.1-or-later@4.6:

Il y a beaucoup d'informations retournée par cette commande, les parties qui nous interesses sont :

  • Description
    • Une description du logiciel
  • Homepage
    • L'url du site internet du logiciel
  • Preferred version
    • La version du logiciel qui est conseillée et sera installée si une demande d'installation ne précise pas en quelle version
  • Safe versions
    • Toutes les autres version stables du logiciel qui peuvent être installées, a condition de demander la version explicitement lors de l'installation.
  • Deprecated versions
    • Des versions installables mais non recommandées. Une option particulière est nécéssaire pour installer ces versions.
  • Variants
    • Toutes les options et variantes possible à l'installation.

Pour ce qui concerne les variantes, cette liste affiche quelle est l'option par défaut de cette option si vous ne la precisez pas (activée : true, désactivée : false, ou une valeur autre), ainsi qu'une courte description. Il est également indiqué toutes les valeurs que ces options peuvent prendre.

Par exemple :

shared [true]                            false, true
Enables the build of shared libraries

Ici il est indiqué que l'option 'shared' sera activée par défaut, qu'elle peut être désactivée, et a quoi elle sert.

Un autre exemple :

when +cuda
cuda_arch [none] none, 10, 11, 12, 13, 20, 21, 30,
32, 35, 37, 50, 52, 53, 60, 61,
62, 70, 72, 75, 80, 86, 87, 89,
90, 90a
CUDA architecture

Ici cette option est indiquée comme valide uniquement si l'option cuda est activée. Elle est pas défaut à none et peut être reglée sur de multiples valeurs.

Choisir un compilateur

Il est possible mais pas obligatoire de choisir un compilateur quand nous installons un logiciel. Pour connaitre la liste des compilateurs disponibles vous pouvez faire :

spack compilers

==> Available compilers
-- aocc rhel9-x86_64 --------------------------------------------
aocc@4.2.0

-- gcc rhel9-x86_64 ---------------------------------------------
gcc@11.4.1

Quand vous installez un logiciel, Spack choisira le compilateur compatible qu'il jugera le plus adapté (en suivant ce qu'a définit le créateur du package du logiciel installé). Mais d'autres compilateurs sont utilisables, nous verrons comment préciser le compilateur à utiliser, un peu plus bas.

Lancer l'installation

Imaginons maintenant que nous souhaitons installer curl dans sa version 8.7.1, avec une version incluant libssh, et une version sans :

spack install curl@8.7.1 +libssh

Spack va alors installer et configurer toutes les dépendances nécéssaires pour ce logiciel, puis le logiciel.

Une fois terminé il indique :

==> curl: Successfully installed curl-8.7.1-toswmnbqvylrxvrf3v7vb23un2jrwnto
Stage: 1.57s. Autoreconf: 0.00s. Configure: 27.26s. Build: 13.02s. Install: 2.90s. Post-install: 0.25s. Total: 45.74s
[+] /home/fberini/.spack/userspace-installed/linux-rhel9-zen4/gcc-11.4.1/curl-8.7.1-toswmnbqvylrxvrf3v7vb23un2jrwnto

Pour installer la version sans libssh :

spack install curl@8.7.1 -libssh (ou spack install curl@8.7.1 étant donné que l'option libssh est à false par défaut)

==> curl: Successfully installed curl-8.7.1-7sft7ozg4d3qyyesbnf2wojhgjjr4yga
Stage: 1.37s. Autoreconf: 0.00s. Configure: 23.05s. Build: 7.48s. Install: 2.70s. Post-install: 0.22s. Total: 35.17s
[+] /home/fberini/.spack/userspace-installed/linux-rhel9-zen4/gcc-11.4.1/curl-8.7.1-7sft7ozg4d3qyyesbnf2wojhgjjr4yga

Si vous demandez à installer une version et variante d'un logiciel qui est déjà disponible, Spack vous indiquera un [+] devant chaque étape, sans relancer d'étape d'installation :

[+] /usr (external glibc-2.34-xydkni6ohoz32trfuw3af23mgh4gzekh)
[+] /apps/2025/spack_install/linux-rhel9-zen4/gcc-11.4.1/gcc-runtime-11.4.1-gyz4y5hug4ulenjop7ie3gyqjy6xpe62
[+] /home/fberini/.spack/userspace-installed/linux-rhel9-zen4/gcc-11.4.1/nghttp2-1.63.0-2xii4wyk6lzolehjwlrhz4thm2753gxz
[+] /home/fberini/.spack/userspace-installed/linux-rhel9-zen4/gcc-11.4.1/zlib-ng-2.2.1-25dszjwt2ffkfurjanzasse75stbsjb2
[+] /home/fberini/.spack/userspace-installed/linux-rhel9-zen4/gcc-11.4.1/openssl-3.3.1-uvtay55szpuhp555uawoedgtnsp4c3rs
[+] /home/fberini/.spack/userspace-installed/linux-rhel9-zen4/gcc-11.4.1/curl-8.7.1-7sft7ozg4d3qyyesbnf2wojhgjjr4yga

Vous remarquerez peut être dans les retours des commandes précédantes que ces installations ne se passent pas dans le /apps de Romeo. En effet, quand vous installez un logiciel ce dernier s'installe dans un repertoire 'userspace-installed' dans votre home. Ce repertoire est a l'intérieur d'un repertoire caché nommé '.spack' contenant d'éventuelles configurations personnalisées, et le cache de vos installations.

Vous pouvez nettoyez ce cache en faisant : spack clean

Suite aux deux installations des commandes précédantes, nous pouvons constater que les deux variantes de curl 8.7.1 sont bien disponibles, l'une avec l'option libssh, et une sans :

spack find --variants curl@8.7.1

-- linux-rhel9-zen4 / gcc@11.4.1 --------------------------------
curl@8.7.1~gssapi~ldap~libidn2~librtmp~libssh~libssh2+nghttp2 build_system=autotools libs=shared,static tls=openssl
curl@8.7.1~gssapi~ldap~libidn2~librtmp+libssh~libssh2+nghttp2 build_system=autotools libs=shared,static tls=openssl
==> 2 installed packages

Ces programmes peuvent maintenant être utilisés sur votre compte. Mais uniquement depuis votre compte.

Pour qu'un autre utilisateur ai accès à une version identique du logiciel, il faudra lui communiquer la ligne d'installation exacte utilisée par votre installation, en incluant bien les versions, compilateurs (voir plus bas) et options, afin qu'il l'installe dans son home.

Si de nombreux utilisateurs sont succeptibles d'utiliser ce logiciel, il est possible de demander via un ticket au support ROMEO pour qu'il soit installé et donc mis à disposition de manière globale dans les programmes disponibles via Spack. Il faudra là bien aussi préciser dans le ticket toutes les versions et options souhaitées.


Il est possible de tester ce que Spack va faire avant de lancer l'installation, par exemple si j'utilise la commande spec au lieu de install, je peux voir ce qui sera utilisé, ce qui sera installé (avec un - ), et ce qui est déjà installé (avec un [-]) :

spack spec -t curl@8.7.1 %aocc@4.2.0 ^perl %aocc -threads

Input spec
--------------------------------
- curl@8.7.1%aocc@4.2.0
- ^perl%aocc~threads

Concretized
--------------------------------
- curl@8.7.1%aocc@4.2.0~gssapi~ldap~libidn2~librtmp~libssh~libssh2+nghttp2 build_system=autotools libs=shared,static tls=openssl arch=linux-rhel9-zen4
[e] ^glibc@2.34%gcc@11.4.1 build_system=autotools arch=linux-rhel9-zen4
[^] ^gmake@4.4.1%gcc@11.4.1~guile build_system=generic arch=linux-rhel9-zen4
[^] ^gcc-runtime@11.4.1%gcc@11.4.1 build_system=generic arch=linux-rhel9-zen4
[+] ^nghttp2@1.63.0%gcc@11.4.1 build_system=autotools arch=linux-rhel9-zen4
[+] ^diffutils@3.10%gcc@11.4.1 build_system=autotools arch=linux-rhel9-zen4
[+] ^openssl@3.3.1%gcc@11.4.1~docs+shared build_system=generic certs=mozilla arch=linux-rhel9-zen4
[+] ^ca-certificates-mozilla@2023-05-30%gcc@11.4.1 build_system=generic arch=linux-rhel9-zen4
[+] ^perl@5.40.0%gcc@11.4.1+cpanm+opcode+open+shared+threads build_system=generic arch=linux-rhel9-zen4
- ^perl@5.40.0%aocc@4.2.0+cpanm+opcode+open+shared~threads build_system=generic arch=linux-rhel9-zen4
[+] ^berkeley-db@18.1.40%gcc@11.4.1+cxx~docs+stl build_system=autotools patches=26090f4,b231fcc arch=linux-rhel9-zen4
[+] ^bzip2@1.0.8%gcc@11.4.1~debug~pic+shared build_system=generic arch=linux-rhel9-zen4
[+] ^gdbm@1.23%gcc@11.4.1 build_system=autotools arch=linux-rhel9-zen4
[+] ^readline@8.2%gcc@11.4.1 build_system=autotools patches=bbf97f1 arch=linux-rhel9-zen4
[+] ^ncurses@6.5%gcc@11.4.1~symlinks+termlib abi=none build_system=autotools patches=7a351bc arch=linux-rhel9-zen4
[+] ^pkgconf@2.2.0%gcc@11.4.1 build_system=autotools arch=linux-rhel9-zen4
[+] ^zlib-ng@2.2.1%gcc@11.4.1+compat+new_strategies+opt+pic+shared build_system=autotools arch=linux-rhel9-zen4

Autres options

Il existe de nombreuses options et possibilités de personnalisation avec Spack. Il est par exemple possible de demander un compilateur en particulier le symbole %, ou préciser des options sur ses dépendances en mettant un ^ devant le nom de la dépendance, et les options et compilateur de celle ci derrière. Les dépendances d'un logiciel sont indiquées dans la commande spack info (voir chapitre précédant).

Par exemple je peux demander une installation de curl 8.7.1 avec le compilateur aocc, mais dont sa dépendance 'perl' est compilée avec GCC sans l'option threads :

spack install curl@8.7.1 %aocc@4.2.0 ^perl %gcc@11.4.1 -threads

Nous pouvons alors voir cette version disponible dans la catégorie linux-rhel9-zen4 / aocc@4.2.0:

spack find --explicit
-- linux-rhel9-zen4 / aocc@4.2.0 --------------------------------
curl@8.7.1

-- linux-rhel9-zen4 / gcc@11.4.1 --------------------------------
aocc@4.2.0 blender@4.2.3 curl@8.4.0 curl@8.4.0 curl@8.7.1 curl@8.7.1 gromacs@2024.3 unzip@6.0
==> 9 installed packages

Cette version peut ensuite être chargée pour être utilisée, soit en utilisant le hash (voir chapitre précédant), soit en précisant les options souhaitées précisement:

spack load curl@8.7.1 %aocc@4.2.0 ^perl %gcc@11.4.1 -threads

Pour ce type de manipulations, nous vous conseillons de lire la documentation officielle de Spack et de ne les manipuler que si vous savez ce que vous faites.