J'ai essayé une application python sur ma machine CentOS et cela me donne l'erreur suivante:
ImportError: /usr/lib64/libc.so.6: version `GLIBC_2.18' not found (required by /tmp/_MEI2BYIr4/libstdc++.so.6)
J'ai été tenté de mettre à niveau GLIBC, mais après avoir lu certains forums, il semble que je puisse briser le système. Connaissez-vous une alternative?
Merci
Vérifiez d'abord l'application python car elle pourrait être obsolète et est probablement en train de mal lire la version glibc
. CentOS affiche la version de base telle qu'elle est installée et est corrigée pour suivre les modifications et il pourrait simplement s'agir de corriger la version recherchée dans le code comme solution rapide, mais si l'application est activement développée, vous devez en informer les développeurs ou la créer vous-même si vous le pouvez.
Un glibc
à jour sur CentOS 7 devrait être 2.17-196.el7_4.2
S'il est absolument nécessaire d'exécuter cette application, l'approche officielle de RHEL serait de conteneuriser, mais vous devrez toujours fournir une glibc fonctionnelle, ce qui ne serait pas possible avec le stock CentOS 7.
glibc
dans un emplacement non standardSi ce n'est pas viable, et en dernier recours, il est possible d'installer une version plus récente de glibc
que 2.18 car elle a maintenant cinq ans et glibc
a été mise à jour depuis plusieurs vulnérabilités et je ne suis pas sûr si cela va se construire avec la version de make
dans CentOS 7, mais toute version plus récente devrait fonctionner comme suit:
Vous pouvez créer la version de glibc
dont vous avez besoin ailleurs sur votre serveur et l'ajouter à LD_LIBRARY_PATH
pour l'application. Notez que cela ne doit être fait que pour l'application.
wget http://ftp.gnu.org/gnu/glibc/glibc-2.18.tar.gz
tar zxvf glibc-2.18.tar.gz
cd glibc-2.18
mkdir build
cd build
../configure --prefix=/opt/glibc-2.18
make -j4
Sudo make install
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/glibc-2.18/lib
/opt
est l'emplacement standard pour installer des applications et des bibliothèques tierces, mais vous pouvez utiliser n'importe quel chemin loin des chemins système.
Au final, je n'ai pas eu à mettre à niveau GLIBC. Le gdc-client
l'outil que j'ai téléchargé via R semblait être pour Ubuntu et non CentOS, bien que je l'ai fait sur CentOS 7. J'ai ensuite téléchargé le client gdc pour CentOS et cela a bien fonctionné.
Sur CentOS 7, j'ai inclus le /usr/lib64
dossier dans le rpath
comme suit
patchelf --set-interpreter /opt/glibc-2.18/lib/ld-linux-x86-64.so.2 --set-rpath /opt/glibc-2.18/lib:/usr/lib64 pydio-agent
Cela a fonctionné pour moi