web-dev-qa-db-fra.com

mettre à niveau la glibc en toute sécurité sur CentOS 7

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

6
Paco el Cuqui

Vérifiez qu'il est réellement nécessaire

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

Si nécessaire, Containerise

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.

En dernier recours, installez glibc dans un emplacement non standard

Si 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:

  • Cela peut potentiellement affecter les fonctionnalités de votre ordinateur, alors assurez-vous de savoir ce que vous faites

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.

12
Simon Greenwood

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é.

2
Paco el Cuqui

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

1
Mark Cleverdon