Necesita instalar glibc> = 2.14 en Wheezy

22

Estoy tratando de hacer que Protractor funcione para realizar pruebas angulares e2e, pero el transportador requiere Selenium, que requiere ChromeDriver, que requiere glibc2.14. Mi caja de desarrollo actual está ejecutando Debian Wheezy, que viene con glibc2.13. He leído que cambiar a la rama inestable de Debian proporcionaría acceso a glib-2.14, pero por lo que he escuchado que inestable es bastante ... inestable.

¿Hay alguna manera de que pueda actualizar glibca 2.14 o 2.15 sin el riesgo de romper todo? ¿O es posible volver de la rama inestable de Debian si las cosas comienzan a romperse?

12:15:22.784 INFO - Executing: [new session: {browserName=chrome}] at URL: /session)
12:15:22.796 INFO - Creating a new session for Capabilities [{browserName=chrome}]
/home/chris/projects/personal/woddy/client/selenium/chromedriver:     /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.15' not found (required by      /home/chris/projects/personal/woddy/client/selenium/chromedriver)
/home/chris/projects/personal/woddy/client/selenium/chromedriver: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.14' not found (required by /home/chris/projects/personal/woddy/client/selenium/chromedriver)
12:15:43.032 WARN - Exception thrown
java.util.concurrent.ExecutionException: org.openqa.selenium.WebDriverException:  java.lang.reflect.InvocationTargetException
Chris
fuente
¿Dónde dice que ChromeDriver requiere glibc 2.14? En general, los paquetes de alto nivel no tienen restricciones muy estrechas en la biblioteca C. ¿Lo dice en algún lugar de la documentación o el código, o simplemente aparece como una dependencia en algún paquete? Tenga en cuenta, si aún no lo está, que los paquetes de distribución pueden agregar dependencias excesivamente estrictas sin una buena razón.
Faheem Mitha
Agregué la salida del terminal anterior que muestra dónde se requería 2.14 o 2.15. Sin embargo, todo está funcionando ahora.
Chris

Respuestas:

23

No tiene que cambiar a lo inestable para obtener glib> = 2.14. De hecho, la rama de prueba (ahora estable, o Jessie) tiene glib-2.17 que puede elegir simplemente agregando el repositorio de prueba y lanzando:

sudo apt-get install libc6-dev=2.17-7

o,

sudo apt-get -t testing install libc6-dev

Puede agregar el interruptor --dry-runpara ver qué se instalará de antemano. Puede ver el estado del paquete glibc en el Sistema de seguimiento de paquetes de Debian (Debian cambió el nombre del paquete eglibc a simplemente glibc desde Jessie en adelante).

También puede esperar el lanzamiento de Jessie el 25 de abril .

Braiam
fuente
2
Eso lo hizo. Siguiendo las instrucciones de debian en debian.org/doc/manuals/apt-howto/… y luego ejecutando el segundo comando que enumeró funcionó perfectamente. Gracias por la ayuda. Por cierto, tenía en mi cabeza que inestable era el siguiente paso en lugar de probar.
Chris
1
Ninguno de estos funcionó para mí. El primer método producido E: The value 'testing' is invalid for APT::Default-Release as such a release is not available in the sourcesy el segundoE: Version '2.17-7' for 'libc6-dev' was not found
Sean DeNigris
1
Esta solución aceptada realmente debería tener una advertencia. Lo seguí y terminé con un "FrankenDebian": wiki.debian.org/DontBreakDebian#Don.27t_make_a_FrankenDebian Luego pasé las siguientes 2-3 horas luchando para salir del infierno de la dependencia y llevar mi sistema a un Wheezy estable.
stanri
1
Debian.org menciona explícitamente que esta es una mala idea. No todos son administradores de sistemas. El OP solicitó una solución segura y recomendada, que no rompa nada, y esta solución no cumple ninguno de esos criterios.
stanri
2
Ya que estamos citando cosas ahora. OP: "¿Hay alguna forma de actualizar glibc a 2.14 o 2.15 sin el riesgo de romperlo todo ?" Debian.org:" no es una buena idea agregar repositorios para otras versiones de Debian ... Esto da como resultado un sistema que es una mezcla rota de los dos. "¿Cuánto más claro puedo ser? Esperemos que la gente lea los comentarios antes de tomar este consejo. He terminado.
stanri
22

En mi situación, el error aparece cuando intento ejecutar una aplicación (compilada en Ubuntu 12.04 LTS) usando GLIBC_2.14 en Debian Wheezy (que instala glibc 2.13 por defecto).

Utilizo una forma complicada de ejecutarlo y obtengo el resultado correcto:

  1. Descargar libc6y libc6-devdesde Ubuntu 12.04 LTS

  2. Ejecute el dpkgcomando para instalarlos en un directorio ( /home/user/fakeroot/por ejemplo):

    $ dpkg -x libc6-dev_2.15-0ubuntu10.6_amd64.deb /home/user/fakeroot/
    $ dpkg -x libc6_2.15-0ubuntu10.6_amd64.deb /home/user/fakeroot/
    
  3. Ejecute su comando con especificado LD_LIBRARY_PATH:

    $ LD_LIBRARY_PATH=/home/user/fakeroot/lib/x86_64-linux-gnu/ YOUR_COMMAND
    
  4. Mi aplicación solo usa memcpy()GLIBC_2.14, y funciona.

    No sé si funcionará con éxito para otras aplicaciones.

Bin S
fuente
¡Gracias! Estas instrucciones me permitieron ejecutar fácilmente Shaka Packager en Debian Wheezy. Estoy envolviendo mi comando en un script bash que se ve exec env LD_LIBRARY_PATH=/home/user/fakeroot/lib/x86_64-linux-gnu/ YOUR_COMMAND "$@"para que el comando esté fácilmente disponible sin necesidad de especificar LD_LIBRARY_PATH cada vez.
Gabe Kopley
1

Supongo que hay varias opciones para que pruebes la rama inestable "de forma segura":

  • Virtualización
  • Chrooting por el que elige un directorio alternativo como su directorio raíz aparente. De este modo, puede crear una imagen del sistema de archivos e instalar manualmente los paquetes necesarios. Este es un proceso complicado y se hace mucho más fácil en el caso de Debian usando:
  • deboostrap que, para citar el artículo de Debian Wiki en este enlace, es

    Una herramienta que instalará un sistema base Debian en un subdirectorio de otro sistema ya instalado. No requiere un CD de instalación, solo acceso a un repositorio de Debian.

    Esto no implica que debootstrapuse la técnica de chrooting; No estoy al tanto de su implementación interna.

Joseph R.
fuente
Utilicé el tutorial de debootstrap y era justo lo que necesitaba: wiki.debian.org/Debootstrap Seguí el ejemplo de sid pero usé jessie en su lugar: ¡ debootstrap --arch amd64 jessie $MY_CHROOT http://http.debian.net/debian/ Gracias!
Drew LeSueur