Besoin d'installer glibc> = 2.14 sur Wheezy

22

J'essaie de faire fonctionner Protractor pour effectuer des tests angulaires e2e, mais le rapporteur nécessite Selenium qui nécessite ChromeDriver qui nécessite glibc2.14. Ma boîte de développement actuelle exécute Debian Wheezy qui vient avec glibc2.13. J'ai lu que le passage à la branche instable de Debian fournirait un accès à glib-2.14, mais d'après ce que j'ai entendu, instable est assez ... instable.

Existe-t-il un moyen de passer glibcà 2.14 ou 2.15 sans risquer de tout casser? Ou est-il possible de revenir de la branche Debian instable si les choses commencent à se casser?

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
la source
Où est-il dit que ChromeDriver nécessite la glibc 2.14? En général, les packages de haut niveau n'ont pas de contraintes très étroites sur la bibliothèque C. Le dit-il quelque part dans la documentation ou le code, ou est-il simplement répertorié comme une dépendance dans un paquet? Sachez, si ce n'est pas déjà fait, que les packages de distribution peuvent ajouter des dépendances trop strictes sans raison valable.
Faheem Mitha
J'ai ajouté la sortie du terminal ci-dessus montrant où 2.14 ou 2.15 était requis. Cependant, tout fonctionne maintenant.
chris

Réponses:

23

Vous n'avez pas besoin de passer à l' instable pour obtenir glib> = 2.14. En fait, la branche testing (maintenant stable, ou Jessie) a glib-2.17 que vous pouvez choisir simplement en ajoutant le référentiel de tests et en lançant:

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

ou,

sudo apt-get -t testing install libc6-dev

Vous pouvez ajouter le commutateur --dry-runpour voir ce qui sera installé avant la main. Vous pouvez voir l'état du paquet glibc dans le système Debian Package Tracker (Debian renommé paquet eglibc pour simplement glibc à partir de Jessie).

Vous pouvez également attendre la sortie de Jessie le 25 avril .

Braiam
la source
2
Ça l'a fait. Suivre les instructions debian sur debian.org/doc/manuals/apt-howto/… puis exécuter la deuxième commande que vous avez listée a parfaitement fonctionné. Merci pour l'aide. BTW Je pensais que l' instabilité était la prochaine étape au lieu de tester.
chris
1
Aucun de ces éléments n'a fonctionné pour moi. La première méthode produite E: The value 'testing' is invalid for APT::Default-Release as such a release is not available in the sourceset la secondeE: Version '2.17-7' for 'libc6-dev' was not found
Sean DeNigris
1
Cette solution acceptée devrait vraiment avoir un avertissement. Je l'ai suivi et je me suis retrouvé avec un "FrankenDebian": wiki.debian.org/DontBreakDebian#Don.27t_make_a_FrankenDebian J'ai ensuite passé les 2-3 prochaines heures à me battre pour sortir de l'enfer de la dépendance et ramener mon système à un Wheezy stable.
stanri
1
Debian.org mentionne explicitement que c'est une mauvaise idée. Tout le monde n'est pas un administrateur système. Le PO a demandé une solution sûre et recommandée, qui ne casse rien, et cette solution ne répond à aucun de ces critères.
stanri
2
Puisque nous citons des choses maintenant. OP: "Existe-t-il un moyen de mettre à niveau la glibc vers 2.14 ou 2.15 sans risquer de tout casser ?" Debian.org:" ce n'est pas une bonne idée d'ajouter des référentiels pour d'autres versions de Debian .... Cela se traduit par un système qui est un mélange cassé des deux. "A quel point puis-je être plus clair? J'espère que les gens liront les commentaires avant de suivre ce conseil. J'ai fini.
stanri
22

Dans ma situation, l'erreur apparaît lorsque j'essaie d'exécuter une application (compilée sur Ubuntu 12.04 LTS) à l'aide de GLIBC_2.14 sur Debian Wheezy (qui installe glibc 2.13 par défaut).

J'utilise un moyen délicat pour l'exécuter et obtenir un résultat correct:

  1. Téléchargement libc6et libc6-devdepuis Ubuntu 12.04 LTS

  2. Exécutez la dpkgcommande pour les installer dans un répertoire ( /home/user/fakeroot/par exemple):

    $ 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. Exécutez votre commande avec spécifié LD_LIBRARY_PATH:

    $ LD_LIBRARY_PATH=/home/user/fakeroot/lib/x86_64-linux-gnu/ YOUR_COMMAND
    
  4. Mon application utilise uniquement memcpy()de GLIBC_2.14, et cela fonctionne.

    Je ne sais pas si cela fonctionnera avec succès pour d'autres applications.

Bacs
la source
Merci! Ces instructions m'ont permis d'exécuter facilement Shaka Packager sur Debian Wheezy. J'encapsule ma commande dans un script bash qui ressemble à exec env LD_LIBRARY_PATH=/home/user/fakeroot/lib/x86_64-linux-gnu/ YOUR_COMMAND "$@"ce que la commande soit facilement disponible sans avoir besoin de spécifier LD_LIBRARY_PATH à chaque fois.
Gabe Kopley
1

Je suppose qu'il existe plusieurs options pour essayer la branche instable "en toute sécurité":

  • Virtualisation
  • Chrooter par lequel vous choisissez un répertoire alternatif comme répertoire racine apparent. Vous pouvez ainsi créer une image de système de fichiers et installer manuellement les packages requis. C'est un processus compliqué et il est rendu beaucoup plus facile dans le cas de Debian en utilisant:
  • deboostrap qui, pour citer l'article Debian Wiki sur ce lien, est

    un outil qui installera un système de base Debian dans un sous-répertoire d'un autre système déjà installé. Il ne nécessite pas de CD d'installation, il suffit d'accéder à un référentiel Debian.

    Cela ne signifie pas que debootstrapla technique du chrootage est utilisée; Je ne connais pas sa mise en œuvre interne.

Joseph R.
la source
J'ai utilisé le tutoriel debootstrap et c'était exactement ce dont j'avais besoin: wiki.debian.org/Debootstrap J'ai suivi l'exemple sid mais j'ai utilisé jessie à la place: debootstrap --arch amd64 jessie $MY_CHROOT http://http.debian.net/debian/ Merci!
Drew LeSueur