Presque aucune command ne fonctionne – erreur de réinstallation: symbole __getrlimit, la version GLIBC_PRIVATE n'est pas définie dans libc.so.6

Je suis connecté avec SSH à une machine sur laquelle je n'ai pas d'access root. Pour installer quelque chose, j'ai téléchargé des bibliothèques de ma machine et les ai placées dans le directory ~/lib de l'hôte distant.

Maintenant, pour presque n'importe quelle command que j'exécute, j'obtiens l'erreur ci-dessous (exemple pour ls ) ou un message de Segmentation fault (core dumped) .

 ls: relocation error: /lib/libpthread.so.0: symbol __getrlimit, version GLIBC_PRIVATE not defined in file libc.so.6 with link time reference 

Les seules commands que j'ai réussi à faire fonctionner sont cd et pwd jusqu'à présent. Je peux à peu près find des files dans un directory en utilisant TAB pour autocomplete ls , afin que je puisse passer à travers les directorys.

uname -r renvoie également le message Segmentation fault (core dumped) , donc je ne suis pas sûr de la version du kernel que j'utilise.

Puisque vous pouvez vous connecter, rien de majeur n'est cassé; sans doute les scripts de démarrage de votre shell ajoutent ~/lib à LD_LIBRARY_PATH , et cela, avec les mauvaises bibliothèques dans ~/lib , est la cause des problèmes que vous rencontrez.

Pour résoudre ce problème, exécutez

 unset LD_LIBRARY_PATH 

Cela vous permettra d'exécuter rm , vim etc. pour supprimer les bibliothèques gênantes et modifier vos scripts de démarrage si nécessaire.

Le problème est que vous avez placé une copy de glibc dans votre directory ~/lib , et cette bibliothèque est incompatible avec le système sur lequel vous l'avez téléchargé. La bibliothèque est référencée comme ~/lib est spécifié dans $LD_LIBRARY_PATH .

Pour corriger temporairement cela, il suffit de unset LD_LIBRARY_PATH – cela fonctionnera comme unset est un shell embedded. Vous serez alors en mesure d'exécuter votre éditeur de text favori afin de supprimer tout ce qui est dans vos files de démarrage qui définit la variable en premier lieu.