¿Cómo ejecutar un nuevo software sin actualizar GLIBC?

20

Instalé Mathematica 9 en un viejo sistema Red Hat Enterprise Linux AS versión 4. Después de la instalación, intenté iniciar Mathematica, pero apareció el siguiente mensaje:

/home/wcbao/M/Wolfram/Mathematica/9.0/SystemFiles/FrontEnd/Binaries/Linux-x86-64/Mathematica: /lib64/tls/libc.so.6: no se encuentra la versión `GLIBC_2.4 '(requerido por / home / wcbao / M / Wolfram / Mathematica / 9.0 / SystemFiles / Libraries / Linux-x86-64 / libML64i3.so)

/home/wcbao/M/Wolfram/Mathematica/9.0/SystemFiles/FrontEnd/Binaries/Linux-x86-64/Mathematica: /lib64/tls/libc.so.6: no se encuentra la versión `GLIBC_2.4 '(requerido por / home / wcbao / M / Wolfram / Mathematica / 9.0 / SystemFiles / Libraries / Linux-x86-64 / libQtCore.so.4)

No quiero actualizar el sistema glibc, porque es arriesgado y el administrador no me permite hacerlo.

Alguien sugirió que es posible instalar una nueva versión de glibc en otro lugar y ejecutar el programa como

LD_LIBRARY_PATH=/lib/new your_application

y esto no afectará al sistema.

Entonces, estoy preguntando aquí si este método realmente funciona. Y si funciona, quiero saber cómo hacerlo paso a paso (no tengo experiencia en Linux en este momento y quiero usar Mathematica en Linux lo antes posible).

Editar :

Me di cuenta de que hay un software llamado "Armiño". Parece que puede implementar un software como paquete independiente que no depende del entorno externo. Lamentablemente, es un shareware. Así que creo que ya que "Ermine" puede hacerlo, debe haber una manera de usar un nuevo software en un sistema antiguo.

usuario15964
fuente
2
Funcionaría Es probable que sea bastante trabajo configurarlo (necesitará instalar todas las bibliotecas de las que depende Mathematica). Mi recomendación sería instalar paquetes rpm de una versión más reciente en un subdirectorio de su hogar. Dejaré que alguien que esté más familiarizado con RH escriba una respuesta explicando cómo hacerlo.
Gilles 'SO- deja de ser malvado'
@Gilles Hola, Gilles, muchas gracias. Estoy deseando que llegue.
user15964
Que es riesgoso para instalar glibc en otro lugar.
BenjiWiebe
@BenjiWiebe: ¿a qué tipo de riesgos se refiere exactamente?
FooF
1
Publicación cruzada del superusuario: superuser.com/questions/543249/... Repitiendo mi comentario desde allí: "RHEL4 tiene ocho años y ha llegado al final de su ciclo de vida útil normal. ¿No hay otra máquina en la que pueda instalarlo? por ejemplo, su máquina de escritorio ".
Burhan Ali

Respuestas:

10

Definitivamente puede compilar una nueva versión de GLIBC y almacenarla en un directorio separado. Lo primero que tendrá que hacer es descargar la versión de glibc que desee de http://ftp.gnu.org/gnu/glibc/ .

Ejecute el configurescript y establezca el --prefix=a algo así /home/you/mylibs.

Una vez que haya logrado instalarlo en ese directorio, deberá configurarlo LD_LIBRARY_PATHen la ubicación del nuevo glibc.

Tendrá que averiguar las dependencias que necesite compilar. Puede crear un script de shell que establezca las variables LD_ * y ejecute su programa (lo que tendría que hacer de todos modos), y ejecútelo repetidamente: descargue / vuelva a compilar las bibliotecas que faltan en el camino.

También puede usar lddpara determinar qué bibliotecas compartidas necesita el programa, luego usar ldden cada una de las bibliotecas para averiguar si requieren glibc.

Este puede ser un proceso que consume mucho tiempo y no es para los impacientes o débiles del corazón : atravesar / recompilar las posibles dependencias necesarias para que su aplicación funcione puede ocasionalmente hacer que desee arrancarse el cabello.

Actualización 1:

He descargado glibc-2.4 y trató de compilar en CentOS 6. Para configuretrabajar correctamente que tenía que cambiar las acy ldverificación de la versión cambiando:

2.1[3-9]*)

a:

2.*)

en líneas 4045y 4106en el configurearchivo mismo. Establezco mis variables de entorno * FLAGS de esta manera:

LDFLAGS="-Wl,--sort-common -Wl,-zcombreloc -Wl,-znow" 
CFLAGS="-pipe -fomit-frame-pointer -g1 -O3 -frename-registers -fweb -ftracer -fmodulo-sched -fvariable-expansion-in-unroller -fgcse-sm"
CXXFLAGS="${CFLAGS}" 
CFLAGS="${CFLAGS} -freorder-blocks-and-partition" 
export LDFLAGS CFLAGS CXXFLAGS

y luego ejecutado ./configure --prefix=/home/tim/masochist. Se configuró correctamente ... y también comenzó a compilarse correctamente ... pero luego comencé a encontrar errores, principalmente el compilador quejándose de las cosas que se redefinían.

En ese momento me di por vencido ... Porque se estaba volviendo demasiado lento . ;)

livingstaccato
fuente
+1 para la información, aunque la última línea es importante. El OP necesita decidir si la cantidad de esfuerzo involucrado vale la pena.
Burhan Ali
¡Gracias a todos! Ok, renuncio. Creo que sería mejor seguir con Mathematica 8 como compromiso. Funciona en Red Hat 4.
user15964
@livingstaccato Hola, pero ¿cómo comentar las palabras de vonbrand: "Instalar una nueva versión en un lugar extraño es más riesgoso ... La biblioteca en el lugar extraño podría ser recogida por cosas al azar, ...". ¿Es realmente más arriesgado? ¿Alguna vez has probado la forma que se describe en tu respuesta?
user15964
@ user15964 No es arriesgado a menos que no esté prestando atención a lo que está haciendo root o que haga algo extraño como cambiar su LD_PRELOAD en el script de inicio de sesión y bloquearse.
livingstaccato
@ user15964 Además, sí, he reconstruido glibc de manera muy tradicional.
livingstaccato
1

Actualizar glibc a una versión compatible con su distribución es de bajo riesgo. Está escrito para manejar la compatibilidad con versiones que datan de hace mucho tiempo, y (dejando al descubierto los errores) una nueva versión debería ser una simple sustitución. Instalar una nueva versión en algún lugar extraño es más riesgoso, en mi humilde opinión.

vonbrand
fuente
44
pero el problema es que no soy el administrador, no tengo la autoridad. Incluso si obtuve el permiso, tengo miedo de hacer cambios en el sistema, porque esa no es mi computadora, en realidad es un clúster, muchas personas trabajan en él. Por cierto, ¿por qué una nueva versión en otro lugar es arriesgada? Solo necesito vincular el software que necesitaba a la nueva lib, no todo el sistema.
user15964
1
¿Y te sientes libre de instalar algún paquete aleatorio? Las políticas de administración del sistema están atrasadas por una revisión seria . La biblioteca en el lugar extraño podría ser recogida por cosas aleatorias, y resolver solo la ejecución de su aplicación (y los posibles procesos iniciados por ella, que no involucran programas estándar) podría resultar un gran desafío ...
vonbrand
1
@vonbrand - Tonterías, a menos que estemos hablando de alguna máquina de alta seguridad (y no, por ejemplo, de un desarrollador compartido o máquina / clúster de prueba) en cuyo caso es necesario tener una paranoia saludable sobre software no auditado extranjero. En términos de roturas aleatorias, es bastante diferente actualizar libc (que afecta a todo el sistema, posiblemente causando roturas del sistema) que simplemente instalar un programa de aplicación aislado de fuentes confiables (no estoy de acuerdo con la idea de que Mathematica es un paquete aleatorio). El agotamiento de recursos, por supuesto, es una preocupación válida que los administradores de sistemas competentes deben abordar.
FooF
@FooF, he visto demasiados casos de "La administración sabe mejor, deja que los usuarios hagan lo que quieran sin ayuda" para tener ilusiones en esta área.
vonbrand
1
@vonbrand: tiendo a estar de acuerdo con tu último comentario. Pero estoy totalmente en desacuerdo con que actualizar libc o instalar software conocido (no "paquete aleatorio") es de alguna manera comparable (suponiendo que no haya malas intenciones). Sabemos muy poco sobre la naturaleza del medio ambiente y sus usuarios para expresar cualquier opinión definitiva aquí. En máquinas de desarrollo de software (con muchos usuarios competentes), podría tener sentido permitir a los usuarios ejecutar su propio software. A veces es una simple necesidad (OpenWRT y OpenEmbedded que las plataformas integradas de destino construirán a partir de las fuentes algunas herramientas necesarias para construir la imagen f / w).
FooF
-3

En este caso particular, diría que no te molestes, a menos que tengas ayuda (y permiso) de los administradores de este sistema compartido.

Mathematica se ejecuta en Windows, Mac y Linux, así que simplemente instálelo en su máquina de escritorio donde no tenga que preocuparse por afectar a otros. También es más probable que el sistema operativo sea más reciente que RHEL4 y, por lo tanto, no tendrá que hacer ninguna contorsión para instalarlo.

Burhan Ali
fuente