Auf Wheezy muss glibc> = 2.14 installiert werden

22

Ich versuche, den Winkelmesser zum Ausführen von e2e-Winkeltests zum Laufen zu bringen, aber für den Winkelmesser ist Selen erforderlich, für den ChromeDriver istglibc 2.14 erforderlich . Auf meiner aktuellen Entwicklungsbox läuft Debian Wheezy, das mit glibc2.13 geliefert wird . Ich habe gelesen, dass das Umschalten auf Debians instabilen Zweig den Zugriff auf ermöglichen würde glib-2.14, aber von dem, was ich gehört habe, ist instabil ziemlich ... instabil.

Kann ich glibcauf 2.14 oder 2.15 upgraden , ohne dass die Gefahr besteht, dass alles kaputt geht? Oder ist es möglich, aus dem instabilen Debian-Zweig zurückzukehren, wenn die Dinge anfangen zu brechen?

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
quelle
Wo steht, dass ChromeDriver glibc 2.14 benötigt? Im Allgemeinen unterliegen Pakete auf hoher Ebene keinen sehr engen Einschränkungen für die C-Bibliothek. Sagt es das irgendwo in der Dokumentation oder im Code oder wird es einfach als Abhängigkeit in einem Paket aufgelistet? Beachten Sie, dass Distributionspakete ohne triftigen Grund möglicherweise zu strenge Abhängigkeiten hinzufügen.
Faheem Mitha
Ich habe die Terminal-Ausgabe oben hinzugefügt, um zu zeigen, wo 2.14 oder 2.15 benötigt wurden. Jetzt funktioniert jedoch alles.
Chris

Antworten:

23

Sie müssen nicht auf den Schalter instabil glib> = 2,14 zu erhalten. In der Tat hat der Testzweig (jetzt stabil oder Jessie) glib-2.17, den Sie auswählen können, indem Sie einfach das Test-Repository hinzufügen und starten:

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

oder,

sudo apt-get -t testing install libc6-dev

Sie können den Schalter hinzufügen, um --dry-runzu sehen, was vor der Installation installiert wird. Sie können den Status des glibc-Pakets im Debian Package Tracker-System sehen (Debian hat das eglibc-Paket umbenannt, sodass es ab Jessie einfach glibc ist).

Du kannst auch einfach auf Jessies Veröffentlichung am 25. April warten .

Braiam
quelle
2
Das hat es geschafft. Befolgen Sie die Anweisungen von debian unter debian.org/doc/manuals/apt-howto/…, und führen Sie dann den zweiten Befehl aus, den Sie aufgelistet haben. Danke für die Hilfe. Übrigens hatte ich es im Kopf, dass Instabilität der nächste Schritt war, anstatt zu testen.
Chris
1
Beides hat bei mir nicht funktioniert. Die erste Methode produziert E: The value 'testing' is invalid for APT::Default-Release as such a release is not available in the sourcesund die zweiteE: Version '2.17-7' for 'libc6-dev' was not found
Sean DeNigris
1
Diese akzeptierte Lösung sollte wirklich eine Warnung haben. Ich folgte ihm und endete mit einem "FrankenDebian": wiki.debian.org/DontBreakDebian#Don.27t_make_a_FrankenDebian Dann verbrachte ich die nächsten 2-3 Stunden damit, mich aus der Hölle der Abhängigkeit herauszukämpfen und mein System wieder auf einen stabilen Wheezy zu bringen.
Stanri
1
Debian.org erwähnt ausdrücklich, dass dies eine schlechte Idee ist. Nicht jeder ist ein Sysadmin. Das OP forderte eine sichere, empfohlene Lösung, die nichts kaputt macht, und diese Lösung erfüllt keines dieser Kriterien.
Stanri
2
Da wir jetzt Dinge zitieren. OP: "Kann ich glibc auf 2.14 oder 2.15 upgraden, ohne dass das Risiko besteht, dass alles kaputt geht ?" Debian.org: "Es ist keine gute Idee, Repositories für andere Debian-Veröffentlichungen hinzuzufügen. Dies führt zu einem System, das eine kaputte Mischung aus beiden darstellt. " Wie viel klarer kann ich sein? Hoffentlich lesen die Leute die Kommentare, bevor sie diesen Rat annehmen. Ich bin fertig.
Stanri
22

In meiner Situation tritt der Fehler auf, wenn ich versuche, eine Anwendung (kompiliert unter Ubuntu 12.04 LTS) mit GLIBC_2.14 unter Debian Wheezy (die standardmäßig glibc 2.13 installiert) auszuführen.

Ich benutze einen kniffligen Weg, um es auszuführen und das richtige Ergebnis zu erhalten:

  1. Herunterladen libc6und libc6-devvon Ubuntu 12.04 LTS

  2. Führen Sie den dpkgBefehl aus, um sie in einem Verzeichnis zu installieren ( /home/user/fakeroot/zum Beispiel):

    $ 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. Führen Sie Ihren Befehl mit den folgenden Angaben aus LD_LIBRARY_PATH:

    $ LD_LIBRARY_PATH=/home/user/fakeroot/lib/x86_64-linux-gnu/ YOUR_COMMAND
    
  4. Meine Anwendung wird nur memcpy()von GLIBC_2.14 verwendet und funktioniert.

    Ich weiß nicht, ob es für andere Anwendungen erfolgreich funktioniert.

Bin S
quelle
Vielen Dank! Mit diesen Anweisungen konnte ich Shaka Packager auf Debian Wheezy problemlos ausführen. Ich verpacke meinen Befehl in ein Bash-Skript, das exec env LD_LIBRARY_PATH=/home/user/fakeroot/lib/x86_64-linux-gnu/ YOUR_COMMAND "$@"so aussieht , dass der Befehl leicht verfügbar ist, ohne jedes Mal LD_LIBRARY_PATH angeben zu müssen.
Gabe Kopley
1

Ich schätze, Sie haben mehrere Möglichkeiten, den instabilen Zweig "sicher" auszuprobieren:

  • Virtualisierung
  • Chrooting, bei dem Sie ein alternatives Verzeichnis als scheinbares Stammverzeichnis auswählen. Auf diese Weise können Sie ein Dateisystem-Image erstellen und die erforderlichen Pakete manuell installieren. Dies ist ein komplizierter Prozess und wird im Falle von Debian durch die Verwendung von:
  • deboostrap ist , um den Debian-Wiki-Artikel unter diesem Link zu zitieren,

    Ein Tool, das ein Debian-Basissystem in ein Unterverzeichnis eines anderen, bereits installierten Systems installiert. Es ist keine Installations-CD erforderlich, sondern nur der Zugriff auf ein Debian-Repository.

    Dies bedeutet nicht, dass debootstrapdie Chroot-Technik verwendet wird. Mir ist die interne Implementierung nicht bekannt.

Joseph R.
quelle
Ich habe das Debootstrap-Tutorial verwendet und es war genau das, was ich brauchte: wiki.debian.org/Debootstrap Ich habe das Sid-Beispiel befolgt, aber stattdessen Jessie verwendet: debootstrap --arch amd64 jessie $MY_CHROOT http://http.debian.net/debian/ Danke!
Drew LeSueur