Mise à jour du 13/09/2024.
Lorsqu'une application utilise une ou plusieurs librairies dynamiques (encore appelées librairies partagées) et si ces librairies sont elles-mêmes des développements spécifiques, elles ne peuvent pas être installées n'importe où. Elles doivent être copiées sur un chemin de recherche par le système des librairies dont le plus connu est /usr/lib/x86_64-linux-gnu.
Toutefois, copier des librairies sur un chemin "système" n'est pas une bonne idée car cela complique la tâche des exploitants (sauvegardes, mises à jour, etc.). Une solution couramment utilisée est de lancer le programme via un script qui met à jour préalablement la variable d'environnement LD_LIBRARY_PATH. Ce mécanisme est à la fois lourd et objet de complication pour les exploitants. Idéalement, il faudrait pouvoir déclarer au système des chemins spécifiques où seraient copiées les librairies spécifiques.
La commande clef pour savoir quelles sont les librairies référencées et sur quels chemins elles se trouvent est la commande ldconfig -v. La commande ldconfig permet de configurer les liaisons d'exécution de l'éditeur de liens dynamique. En d'autres termes, elle permet de configurer les chemins sur lesquels le système peut trouver les librairies spécifiques, ce qui est exactement ce que nous voulons.
Si on execute la commande ldconfig -v on trouve les fichiers de configuration des chemins de recherche :
/usr/lib/x86_64-linux-gnu/libfakeroot: (de /etc/ld.so.conf.d/fakeroot-x86_64-linux-gnu.conf:1) libfakeroot-0.so -> libfakeroot-tcp.so /usr/local/lib: (de /etc/ld.so.conf.d/libc.conf:2) /lib/x86_64-linux-gnu: (de /etc/ld.so.conf.d/x86_64-linux-gnu.conf:3) libabsl_strings.so.20220623 -> libabsl_strings.so.20220623.0.0 ...
Il est donc possible d'éditer directement ces fichiers de configuration. Celui qui nous intéresse est /etc/ld.so.conf. Dans la version 12 de Debian, ce fichier nous renvoi vers plusieurs autres via l'inclusion :
include /etc/ld.so.conf.d/*.conf
Parmi les différents fichiers "inclus", c'est /etc/ld.so.conf.d/x86_64-linux-gnu.conf qui nous intéresse. En effet, c'est dans ce fichier que se trouve la déclaration des chemins de la plupart des librairies.
Imaginons que nous souhaitions installer sous /usr/lib/monappli les librairies spécifiques utilisées par différentes applications. Il suffit d'ajouter ce chemin au fichier /etc/ld.so.conf.d/x86_64-linux-gnu.confpour que ces librairies fassent désormais partie des chemins de recherche du système.
Ceci fait, il faut taper la commande ldconfig pour actualiser le cache des chemins de recherche des librairies.
Rédaction par Jean-Marie Piatte (1983-2021)