Mettre à jour le cache ldconfig sans autorisation root

$ uname -a Linux xhost10.bcgsc.ca 2.6.18-194.el5 #1 SMP Fri Apr 2 14:58:14 EDT 2010 x86_64 x86_64 x86_64 GNU/Linux $ /sbin/ldconfig --version ldconfig (GNU libc) 2.5 

J’installe plusieurs binarys et bibliothèques localement, car je n’ai pas d’access root.

Certains programmes doivent être liés dynamicment à une bibliothèque partagée dans un emplacement non standard au moment de l’exécution.

Une fois exécuté, le programme retourne:

 $ path/to/cc1 path/to/cc1: error while loading shared libraries: libmpc.so.3: cannot open shared object file: No such file or directory 

J’ai ajouté des chemins vers les bibliothèques $LD_LIBRARY_PATH , mais je ne peux pas mettre à jour le cache ldconfig sans access root …

Existe-t-il un /etc/ld.so.cache spécifique à l’ /etc/ld.so.cache ?

Ou plus généralement, est-il possible de «masquer» un fichier de configuration système avec un fichier de configuration utilisateur?

Le cache ldconfig s’applique uniquement au chemin spécifié dans /etc/ld.so.conf ou /etc/ld.so.conf.d. Comme ils ne sont pas accessibles en écriture pour les utilisateurs non root, vous ne pouvez pas les utiliser pour améliorer la vitesse de démarrage des exécutables installés sans les permissions root sans l’aide de root (même si cela est une mauvaise idée d’append un fichier les chemins de recherche de la bibliothèque à l’échelle du système).

Donc, pour ces cas, vous devez utiliser la variable d’environnement LD_LIBRARY_PATH ou la variable rpath / runpath dans l’exécutable ou la bibliothèque qui dépend des bibliothèques du chemin d’access par défaut. Je ne suis pas au courant des différences de vitesse entre LD_LIBRARY_PATH et rpath / runpath, mais rpath / runpath présente l’avantage de n’affecter que des exécutables spécifiques et donc de causer moins de problèmes pour d’autres programmes.

Dans linux / unix, il n’y a pas de moyen général de masquer un fichier de configuration système et d’utiliser plutôt un fichier fourni par l’utilisateur. En fait, le modèle de sécurité unix doit éviter activement ce type de sécurité pour éviter divers types d’escalade de privilèges. C’est la raison pour laquelle même de nombreuses variables d’environnement sont désactivées pour les exécutables suid par exemple. De nombreux programmes ont un moyen unique de spécifier la configuration utilisateur prioritaire, d’autres plus compliqués permettent également à l’administrateur système de définir des parameters obligatoires non remplaçables.