Cómo actualizar glibc a 2.14 en CentOS 6.5

47

Quiero instalar Android NDK en mi máquina CentOS 6.5. Pero cuando ejecuté el programa, dice que necesita glibc 2.14 para poder ejecutarse. Mi CentOS 6.5 solo tiene instalado Glibc 2.12. Así que intenté actualizar glibc de la siguiente manera:

$ sudo yum update glibc

Pero después de eso encontré que la versión glibc sigue siendo 2.12, no 2.14.

$ ldd --version
ldd (GNU libc) 2.12

Creo que glibc 2.14 puede no estar disponible en los repositorios CentOS. Entonces, ¿cómo puedo actualizarlo a glibc 2.14 en CentOS 6.5?

tonga
fuente
2
Es más fácil actualizar a CentOS7 que contiene GLibC 2.14 que actualizar GLibC de 2.12 a 2.14. Ver Skype Call Recorder
eyoung100
@ eyoung100 Todavía necesito CentOS 6.5 en lugar de 7. ¿Hay una manera fácil de actualizar Glibc a 2.14? ¡Gracias!
tonga
3
No, vea una de mis otras respuestas para saber por qué .
eyoung100
Según sus respuestas, parece que la mejor solución será actualizar a CentOS 7 o usar una versión anterior de NDK que requiere glibc 2.12. Gracias por tus comentarios.
tonga
1
También puede instalar un chroot CentOS7 para ejecutar el NDK.
derobert

Respuestas:

68

No se puede actualizar glibcde Centos 6forma segura. Sin embargo, puede instalar 2.14junto 2.12con facilidad, a continuación, utilizarlo para compilar proyectos, etc. He aquí cómo:

mkdir ~/glibc_install; cd ~/glibc_install 

wget http://ftp.gnu.org/gnu/glibc/glibc-2.14.tar.gz

tar zxvf glibc-2.14.tar.gz

cd glibc-2.14

mkdir build

cd build

../configure --prefix=/opt/glibc-2.14

make -j4

sudo make install

export LD_LIBRARY_PATH="/opt/glibc-2.14/lib${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}"
UnitasBrooks
fuente
3
Quiero mencionar que ese proceso de construcción toma 2.5 horas en AWS lento. Quizás sea útil para alguien la siguiente información: la instrucción anterior soluciona el psycopg2problema ImportError: /lib/libc.so.6: version 'GLIBC_2.14'(uso Centos 6.5 y PostgreSQL v 9.6)
TitanFighter
1
Brillante respuesta! Seguí esta respuesta exactamente y funcionó a las mil maravillas. Gracias
thonnor
2
También se puede usar para versiones posteriores; simplemente cambie "2.14" a "2.23" o cualquier versión que necesite, como lo resaltan cosas como: /usr/local/lib/somlelib.so: undefined reference to 'somefunction@GLIBC_2.23'(los últimos dígitos son la versión). Para hacer la compilación más rápido, use make -j8 si tiene 8 hilos en su CPU, etc. La mina se completó en pocos minutos.
Roel Van de Paar
Me queda relocation error: libc.so.6: symbol _dl_find_dso_for_object, version GLIBC_PRIVATE not defined in file ld-linux-x86-64.so.2 with link time referencedespués de la fase de exportación (cuando intento cualquier comando). ¿Alguien puede ayudar? @Roel
belka
1
Gracias hombre, trabajó como se esperaba CENTOS 6.10. He sustituido esta línea sudo make installcon make installmientras estaba raíz, porque mi usuario no estaba en el archivo sudoers
Contador م
7

Para instalar glibc 2.14 en paralelo, agregue el prefijo de configuración:

tar zxvf glibc-2.14.tar.gz
cd glibc-2.14
mkdir build
cd build
../configure --prefix=/opt/glibc-2.14
make -j4
make install

Siguiendo este proceso, podrás compilar 2.14 pero deberás decirle al compilador dónde buscar glibc.

A continuación se detallan las formas en que puede exponer el glibc a su programa.

  1. LD_LIBRARY_PATH = / opt / glibc-2.14 / lib

    exportar LD_LIBRARY_PATH.

    La biblioteca está expuesta durante su sesión de inicio de sesión actual.

  2. Puede vincular permanentemente su nueva versión de glibc, pero lea la ADVERTENCIA a continuación:

    ln -sf /opt/glibc-2.14/glibc-2.14.so /lib/libc.so.6.

Desde libc.so.6 es solo un enlace simbólico. Ejecutar el comando anterior hará que el enlace apunte hacia la nueva biblioteca glibc. Sin embargo, este paso no se recomienda ya que hay muchos programas en Linux que dependen de versiones anteriores y dejarán de funcionar.

mikel
fuente
+1 para los detalles de exponer la biblioteca
Contador م
2

Técnica alternativa común. Instalación de GLIBC 2.14 en paralelo (instálelo en el directorio / opt) Luego está disponible para los programas que lo requieren sin romper su sistema operativo central.

BrokenSyntax
fuente
77
¿Cómo harías esto? Descargar un rpm y?
rncrtr