Musisz zainstalować glibc> = 2.14 na Wheezy

22

Próbuję zmusić Kątomierz do pracy przy wykonywaniu testów kątowych e2e, ale kątomierz wymaga Selenium, który wymaga ChromeDriver, który wymaga glibc2.14. Moje obecne okno programistyczne to Debian Wheezy, który jest dostarczany z glibcwersją 2.13. Czytałem, że przejście do niestabilnej gałęzi Debiana zapewni dostęp glib-2.14, ale z tego, co słyszałem, niestabilny jest dość ... niestabilny.

Czy jest jakiś sposób na uaktualnienie glibcdo wersji 2.14 lub 2.15 bez ryzyka zniszczenia wszystkiego? Czy jest możliwe przejście z niestabilnej gałęzi Debiana, jeśli coś zacznie się psuć?

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
źródło
Gdzie jest powiedziane, że ChromeDriver wymaga glibc 2.14? Ogólnie rzecz biorąc, pakiety wysokiego poziomu nie mają bardzo wąskich ograniczeń w bibliotece C. Czy jest tak napisane gdzieś w dokumentacji lub kodzie, czy też jest po prostu wymienione jako zależność w jakimś pakiecie? Pamiętaj, że jeśli jeszcze tego nie zrobiłeś, pakiety dystrybucyjne mogą dodawać zbyt ścisłe zależności bez uzasadnionego powodu.
Faheem Mitha,
Dodałem wyjście terminala powyżej, pokazując, gdzie wymagane jest 2.14 lub 2.15. Jednak wszystko działa teraz.
Chris

Odpowiedzi:

23

Nie musisz przełączać się na niestabilny, aby uzyskać glib> = 2.14. W rzeczywistości gałąź testowania (teraz stabilna lub Jessie) ma glib-2.17, którą możesz wybrać po prostu dodając repozytorium testowe i uruchamiając:

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

lub,

sudo apt-get -t testing install libc6-dev

Możesz dodać przełącznik, --dry-runaby zobaczyć, co zostanie zainstalowane wcześniej. Możesz zobaczyć status pakietu glibc w systemie śledzenia pakietów Debiana (Debian zmienił nazwę pakietu eglibc na po prostu glibc od Jessie).

Możesz także poczekać na wydanie Jessie 25 kwietnia .

Braiam
źródło
2
To zrobiło to. Postępowanie zgodnie z instrukcjami debiana na debian.org/doc/manuals/apt-howto/…, a następnie uruchomienie drugiego z wymienionych poleceń działało idealnie. Dzięki za pomoc. BTW Miałem w głowie, że niestabilność była kolejnym krokiem zamiast testów.
Chris
1
Żadne z tych nie działało dla mnie. Pierwsza wyprodukowana metoda, E: The value 'testing' is invalid for APT::Default-Release as such a release is not available in the sourcesa drugaE: Version '2.17-7' for 'libc6-dev' was not found
Sean DeNigris
1
To zaakceptowane rozwiązanie naprawdę powinno mieć ostrzeżenie. Poszedłem za tym i skończyłem z „FrankenDebian”: wiki.debian.org/DontBreakDebian#Don.27t_make_a_FrankenDebian Następnie spędziłem następne 2-3 godziny walcząc z wydostaniem się z piekła zależności i przywracając system do stabilnego Wheezy.
stanri
1
Debian.org wyraźnie wspomina, że ​​to zły pomysł. Nie wszyscy są administratorami. OP poprosił o bezpieczne, zalecane rozwiązanie, które niczego nie zepsuje, a to rozwiązanie nie spełnia żadnego z tych kryteriów.
stanri
2
Ponieważ teraz cytujemy rzeczy. OP: „Czy mogę w jakiś sposób zaktualizować glibc do 2.14 lub 2.15 bez ryzyka zniszczenia wszystkiego ?” Debian.org:" nie jest dobrym pomysłem dodawanie repozytoriów dla innych wydań Debiana ... To powoduje, że system jest zepsutym połączeniem tych dwóch. "O ile bardziej mogę być jasny? Mam nadzieję, że ludzie przeczytają komentarze przed skorzystaniem z tej porady. Skończyłem.
stanri
22

W mojej sytuacji błąd pojawia się, gdy próbuję uruchomić aplikację (skompilowaną na Ubuntu 12.04 LTS) przy użyciu GLIBC_2.14 na Debian Wheezy (która domyślnie instaluje glibc 2.13).

Używam trudnego sposobu, aby go uruchomić i uzyskać poprawny wynik:

  1. Pobierz libc6i libc6-devz Ubuntu 12.04 LTS

  2. Uruchom dpkgpolecenie, aby zainstalować je w katalogu ( /home/user/fakeroot/na przykład):

    $ 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. Uruchom polecenie z określonymi LD_LIBRARY_PATH:

    $ LD_LIBRARY_PATH=/home/user/fakeroot/lib/x86_64-linux-gnu/ YOUR_COMMAND
    
  4. Moja aplikacja korzysta tylko memcpy()z GLIBC_2.14 i działa.

    Nie wiem, czy zadziała z powodzeniem w przypadku innych aplikacji.

Bin S
źródło
Dzięki! Te instrukcje pozwoliły mi łatwo uruchomić Shaka Packager na Debian Wheezy. Zawijam moje polecenie w skrypcie bash, który wygląda exec env LD_LIBRARY_PATH=/home/user/fakeroot/lib/x86_64-linux-gnu/ YOUR_COMMAND "$@"tak, aby polecenie było łatwo dostępne bez potrzeby każdorazowego podawania LD_LIBRARY_PATH.
Gabe Kopley,
1

Sądzę, że istnieje kilka opcji „bezpiecznego” wypróbowania niestabilnej gałęzi:

  • Wirtualizacja
  • Chrooting, w którym wybierasz alternatywny katalog jako pozorny katalog główny. W ten sposób możesz utworzyć obraz systemu plików i ręcznie zainstalować wymagane pakiety. Jest to skomplikowany proces i jest znacznie łatwiejszy w przypadku Debiana przy użyciu:
  • deboostrap, który, cytując artykuł Debian Wiki pod tym linkiem, to

    narzędzie, które zainstaluje podstawowy system Debian w podkatalogu innego, już zainstalowanego systemu. Nie wymaga instalacyjnego dysku CD, wystarczy dostęp do repozytorium Debiana.

    Nie oznacza to, że debootstrapwykorzystuje technikę chrooting; Nie jestem świadomy jej wewnętrznej implementacji.

Joseph R.
źródło
Użyłem samouczka debootstrap i tego właśnie potrzebowałem: wiki.debian.org/Debootstrap Podążyłem za przykładem sid, ale zamiast tego użyłem jessie: debootstrap --arch amd64 jessie $MY_CHROOT http://http.debian.net/debian/ Dziękuję!
Drew LeSueur