Perlu menginstal glibc> = 2.14 pada Wheezy


22

Saya mencoba untuk membuat busur derajat bekerja untuk melakukan pengujian sudut e2e, tetapi busur derajat membutuhkan Selenium yang membutuhkan ChromeDriver yang membutuhkan glibc2,14. Kotak pengembangan saya saat ini menjalankan Debian Wheezy yang dilengkapi dengan glibc2.13. Saya telah membaca bahwa beralih ke cabang Debian yang tidak stabil akan memberikan akses glib-2.14, tetapi dari apa yang saya dengar tidak stabil itu cukup ... tidak stabil.

Apakah ada cara saya dapat meningkatkan glibcke 2,14 atau 2,15 tanpa risiko merusak segalanya? Atau mungkinkah untuk beralih kembali dari cabang Debian yang tidak stabil jika semuanya mulai rusak?

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

Di mana dikatakan bahwa ChromeDriver memerlukan glibc 2.14? Secara umum, paket tingkat tinggi tidak memiliki kendala yang sangat sempit pada pustaka C. Apakah ia mengatakannya di suatu tempat dalam dokumentasi atau kode, atau hanya terdaftar sebagai dependensi dalam beberapa paket? Berhati-hatilah, jika Anda belum melakukannya, bahwa paket distribusi dapat menambahkan dependensi yang terlalu ketat tanpa alasan yang jelas.
Faheem Mitha

Saya menambahkan output terminal di atas yang menunjukkan di mana 2,14 atau 2,15 diperlukan. Namun semuanya bekerja sekarang.
chris

Jawaban:


23

Anda tidak perlu beralih ke yang tidak stabil untuk mendapatkan glib> = 2.14. Bahkan, cabang pengujian (sekarang stabil, atau Jessie) memiliki glib-2.17 yang dapat Anda pilih hanya dengan menambahkan repositori pengujian dan meluncurkan:

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

atau,

sudo apt-get -t testing install libc6-dev

Anda dapat menambahkan sakelar --dry-rununtuk melihat apa yang akan dipasang sebelumnya. Anda dapat melihat status paket glibc dalam Sistem Tracker Paket Debian (Debian mengganti nama paket eglibc menjadi cukup glibc dari Jessie dan seterusnya).

Anda juga bisa menunggu rilis Jessie pada 25 April .


2
Itu berhasil. Mengikuti instruksi debian di debian.org/doc/manuals/apt-howto/… lalu jalankan perintah kedua yang Anda daftarkan bekerja dengan sempurna. Terima kasih untuk bantuannya. BTW saya pikir di kepala saya bahwa tidak stabil adalah langkah berikutnya daripada pengujian.
chris

1
Tak satu pun dari ini bekerja untuk saya. Metode pertama yang diproduksi E: The value 'testing' is invalid for APT::Default-Release as such a release is not available in the sourcesdan yang keduaE: Version '2.17-7' for 'libc6-dev' was not found
Sean DeNigris

1
Solusi yang diterima ini benar-benar harus memiliki peringatan. Saya mengikutinya dan berakhir dengan "FrankenDebian": wiki.debian.org/DontBreakDebian#Don.27t_make_a_FrankenDebian Saya kemudian menghabiskan 2-3 jam berikutnya berjuang keluar dari neraka ketergantungan dan mengembalikan sistem saya ke Wheezy yang stabil.
stanri

1
Debian.org secara eksplisit menyebutkan bahwa ini adalah ide yang buruk. Tidak semua orang adalah sysadmin. OP meminta solusi yang aman dan direkomendasikan, yang tidak merusak apa pun, dan solusi ini tidak memenuhi kriteria tersebut.
stanri

2
Karena kita mengutip semuanya sekarang. OP: "Apakah ada cara saya bisa memutakhirkan glibc ke 2.14 atau 2.15 tanpa risiko merusak segalanya ?" Debian.org:"Itu bukan ide yang baik untuk menambahkan repositori untuk rilis Debian lainnya .... Ini menghasilkan sistem yang merupakan gabungan dari keduanya. "Seberapa jelas saya? Semoga orang akan membaca komentar sebelum mengambil saran ini. Saya selesai.
stanri

22

Dalam situasi saya, kesalahan muncul ketika saya mencoba menjalankan aplikasi (dikompilasi pada Ubuntu 12,04 LTS) menggunakan GLIBC_2.14 pada Debian Wheezy (yang menginstal glibc 2.13 secara default).

Saya menggunakan cara yang rumit untuk menjalankannya, dan mendapatkan hasil yang benar:

  1. Unduh libc6dan libc6-devdari Ubuntu 12.04 LTS

  2. Jalankan dpkgperintah untuk menginstalnya ke direktori ( /home/user/fakeroot/misalnya):

    $ 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. Jalankan perintah Anda dengan spesifik LD_LIBRARY_PATH:

    $ LD_LIBRARY_PATH=/home/user/fakeroot/lib/x86_64-linux-gnu/ YOUR_COMMAND
    
  4. Aplikasi saya hanya menggunakan memcpy()dari GLIBC_2.14, dan berfungsi.

    Saya tidak tahu apakah itu akan berhasil untuk aplikasi lain.


Terima kasih! Instruksi ini memungkinkan saya menjalankan Shaka Packager dengan mudah di Debian Wheezy. Saya membungkus perintah saya dalam skrip bash yang terlihat seperti exec env LD_LIBRARY_PATH=/home/user/fakeroot/lib/x86_64-linux-gnu/ YOUR_COMMAND "$@"sehingga perintah itu mudah tersedia tanpa harus menentukan LD_LIBRARY_PATH setiap kali.
Gabe Kopley

1

Saya kira ada beberapa opsi bagi Anda untuk mencoba cabang yang tidak stabil "dengan aman":

  • Virtualisasi
  • Chroot dimana Anda memilih direktori alternatif sebagai direktori root Anda. Dengan demikian Anda dapat membuat gambar sistem file dan secara manual menginstal paket yang diperlukan. Ini adalah proses yang rumit dan dibuat lebih mudah dalam kasus Debian menggunakan:
  • deboostrap yang, mengutip artikel Wiki Debian di tautan ini, adalah

    alat yang akan menginstal sistem basis Debian ke dalam subdirektori dari sistem lain yang sudah terpasang. Itu tidak memerlukan CD instalasi, hanya akses ke repositori Debian.

    Ini tidak berarti bahwa debootstrapmenggunakan teknik chroot; Saya tidak mengetahui implementasi internalnya.


Saya menggunakan tutorial debootstrap dan hanya itu yang saya butuhkan: wiki.debian.org/Debootstrap Saya mengikuti contoh sid tetapi saya menggunakan jessie sebagai gantinya: debootstrap --arch amd64 jessie $MY_CHROOT http://http.debian.net/debian/ Terima kasih!
Drew LeSueur
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.