Devi installare glibc> = 2.14 su Wheezy


22

Sto cercando di far funzionare il goniometro per eseguire i test angolari e2e, ma il goniometro richiede selenio che richiede ChromeDriver che richiede glibc2.14. La mia casella di sviluppo attuale esegue Debian Wheezy che viene fornito con glibc2.13. Ho letto che passare al ramo instabile di Debian fornirebbe accesso a glib-2.14, ma da quello che ho sentito instabile è piuttosto ... instabile.

Esiste un modo glibcper aggiornare a 2.14 o 2.15 senza il rischio di rompere tutto? O è possibile tornare indietro dal ramo Debian instabile se le cose iniziano a rompersi?

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

Dove dice che ChromeDriver richiede glibc 2.14? In generale, i pacchetti di alto livello non hanno vincoli molto stretti sulla libreria C. Lo dice da qualche parte nella documentazione o nel codice o è semplicemente elencato come dipendenza in alcuni pacchetti? Tenere presente che, se non lo si è già, i pacchetti di distribuzione possono aggiungere dipendenze eccessivamente rigide senza motivo.
Faheem Mitha,

Ho aggiunto l'uscita del terminale sopra mostrando dove erano richiesti 2.14 o 2.15. Tuttavia ora tutto funziona.
chris,

Risposte:


23

Non è necessario passare a unstable per ottenere glib> = 2.14. In effetti, il ramo di testing (ora stabile o Jessie) ha glib-2.17 che puoi scegliere semplicemente aggiungendo il repository di test e avviando:

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

o,

sudo apt-get -t testing install libc6-dev

Puoi aggiungere lo switch --dry-runper vedere cosa verrà installato prima. Puoi vedere lo stato del pacchetto glibc nel Debian Package Tracker System (il pacchetto Debian ribattezzato Debian in semplicemente glibc da Jessie in poi).

Puoi anche aspettare l' uscita di Jessie il 25 aprile .


2
Quello l'ha fatto. Seguire le istruzioni di debian su debian.org/doc/manuals/apt-howto/…, quindi eseguire il secondo comando che hai elencato ha funzionato perfettamente. Grazie per l'aiuto. A proposito, avevo in mente che instabile era il passo successivo invece di testare.
chris,

1
Nessuno di questi ha funzionato per me. Il primo metodo prodotto E: The value 'testing' is invalid for APT::Default-Release as such a release is not available in the sourcese il secondoE: Version '2.17-7' for 'libc6-dev' was not found
Sean DeNigris

1
Questa soluzione accettata dovrebbe davvero avere un avvertimento. L'ho seguito e ho finito con un "FrankenDebian": wiki.debian.org/DontBreakDebian#Don.27t_make_a_FrankenDebian Ho quindi trascorso le successive 2-3 ore a combattere per uscire dall'inferno delle dipendenze e riportare il mio sistema in un Wheezy stabile.
Stanchi,

1
Debian.org menziona esplicitamente che questa è una cattiva idea. Non tutti sono amministratori di sistema. L'OP ha richiesto una soluzione sicura e raccomandata, che non si rompe affatto, e questa soluzione non soddisfa nessuno di questi criteri.
Stanchi,

2
Dal momento che stiamo citando le cose ora. OP: "Esiste un modo per aggiornare glibc a 2.14 o 2.15 senza il rischio di rompere tutto ?" Debian.org:" Non è una buona idea aggiungere repository per altre versioni di Debian .... Ciò si traduce in un sistema che è un mix rotto dei due. "Quanto più chiaro posso essere? Spero che le persone leggano i commenti prima di prendere questo consiglio. Ho finito.
Stanchi,

22

Nella mia situazione, l'errore appare quando provo a eseguire un'applicazione (compilata su Ubuntu 12.04 LTS) usando GLIBC_2.14 su Debian Wheezy (che installa glibc 2.13 di default).

Uso un modo complicato per eseguirlo e ottengo il risultato corretto:

  1. Scarica libc6e libc6-devda Ubuntu 12.04 LTS

  2. Esegui il dpkgcomando per installarli in una directory ( /home/user/fakeroot/ad esempio):

    $ 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. Esegui il comando con specificato LD_LIBRARY_PATH:

    $ LD_LIBRARY_PATH=/home/user/fakeroot/lib/x86_64-linux-gnu/ YOUR_COMMAND
    
  4. La mia applicazione utilizza solo memcpy()da GLIBC_2.14 e funziona.

    Non so se funzionerà con successo per altre applicazioni.


Grazie! Queste istruzioni mi hanno permesso di eseguire facilmente Shaka Packager su Debian Wheezy. Sto avvolgendo il mio comando in uno script bash che sembra exec env LD_LIBRARY_PATH=/home/user/fakeroot/lib/x86_64-linux-gnu/ YOUR_COMMAND "$@"così che il comando sia facilmente disponibile senza la necessità di specificare LD_LIBRARY_PATH ogni volta.
Gabe Kopley,

1

Immagino che ci siano diverse opzioni per provare "in modo sicuro" il ramo instabile:

  • virtualizzazione
  • Chrooting in base al quale si sceglie una directory alternativa come directory root apparente. È quindi possibile creare un'immagine del file system e installare manualmente i pacchetti richiesti. Questo è un processo complicato ed è molto più semplice nel caso di Debian usando:
  • deboostrap che, per citare l'articolo di Debian Wiki a questo link, è

    uno strumento che installerà un sistema base Debian in una sottodirectory di un altro sistema già installato. Non richiede un CD di installazione, basta accedere a un repository Debian.

    Questo non implica che debootstrapusi la tecnica chrooting; Non sono a conoscenza della sua implementazione interna.


Ho usato il tutorial debootstrap ed era proprio quello di cui avevo bisogno: wiki.debian.org/Debootstrap ho seguito l'esempio sid ma ho usato jessie invece: debootstrap --arch amd64 jessie $MY_CHROOT http://http.debian.net/debian/ grazie!
Ha disegnato LeSueur il
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.