Wheezy'e glibc> = 2.14 kurmanız gerekiyor


22

Protractor'ın e2e açısal testini yapmak için çalışmasını sağlamaya çalışıyorum , ancak iletki 2.14 gerektiren ChromeDriver gerektiren Selenium gerektiriyor . Şu anki geliştirme kutumda 2.13 ile birlikte gelen Debian Wheezy çalışıyor . Debian'ın dengesiz şubesine geçmenin erişim sağlayacağını okudum , ama duyduğum şeyden emin değilim… dengesiz.glibcglibcglib-2.14

Her glibcşeyi kırma riski olmadan 2,14 veya 2,15 seviyesine yükseltebilmemin bir yolu var mı ? Yoksa işler kırılmaya başlarsa dengesiz Debian şubesinden geri dönmek mümkün müdür?

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

ChromeDriver'ın glibc 2.14 gerektirdiği nerede? Genel olarak, yüksek seviyeli paketlerin C kütüphanesinde çok dar kısıtlamaları yoktur. Belgelerde veya kodda bir yerde mi yazıyor, yoksa basitçe bir pakette bağımlılık olarak mı listeleniyor? Henüz yapmadıysanız, dağıtım paketlerinin hiçbir sebep olmadan aşırı katı bağımlılıklar ekleyebileceğini unutmayın.
Faheem Mitha

Terminal çıkışını, 2.14 veya 2.15'in nerede gerekli olduğunu gösteren yukarıdan ekledim. Ancak hepsi şimdi çalışıyor.
chris

Yanıtlar:


23

Glib> = 2.14 almak için kararsız duruma geçmek zorunda değilsiniz . Aslında, test şubesi (şimdi kararlıdır veya Jessie), yalnızca test deposunu eklemek ve başlatmak üzere seçebileceğiniz glib-2.17'ye sahiptir:

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

veya,

sudo apt-get -t testing install libc6-dev

--dry-runElden önce ne kurulacağını görmek için anahtarı ekleyebilirsiniz . Glibc paketinin durumunu Debian Paket İzleyici Sisteminde görebilirsiniz (Debian, eglibc paketini Jessie'den itibaren glibc olarak değiştirdi ).

Ayrıca , 25 Nisan'da Jessie’nin serbest bırakılmasını bekleyebilirsiniz .


2
Bu yaptı. Debian.org/doc/manuals/apt-howto/… adresindeki debian talimatlarını takip ettikten sonra listelediğiniz ikinci komutu çalıştırın. Yardım için teşekkürler. Btw kafamda dengesiz olduğunu test yerine bir sonraki adım olduğunu kafam vardı .
chris

1
Bunların hiçbiri benim için çalıştı. Üretilen ilk yöntem E: The value 'testing' is invalid for APT::Default-Release as such a release is not available in the sourcesve ikincisiE: Version '2.17-7' for 'libc6-dev' was not found
Sean DeNigris

1
Bu kabul edilen çözüm gerçekten bir uyarı olmalı. Onu takip ettim ve bir "FrankenDebian" ile bitirdim: wiki.debian.org/DontBreakDebian#Don.27t_make_a_FrankenDebian Daha sonra 2-3 saatimi bağımlılık cehennemden kurtulmak ve sistemimi kararlı bir Wheezy'e geri götürmek için harcadım.
stanri

1
Debian.org açıkça bunun kötü bir fikir olduğunu söyler. Herkes bir sysadmin değildir. OP, güvenli ve önerilen bir çözüm istedi; bu , hiçbir sorunu çözmedi ve bu çözüm, bu kriterlerin hiçbirini karşılamadı.
stanri

2
Çünkü şimdi bir şeylerden alıntı yapıyoruz. OP: "Her şeyi kırma riski olmadan glibc'yi 2.14 veya 2.15'e yükseltebilmemin bir yolu var mı ?" Debian.org:"it, diğer Debian sürümleri için depolar eklemek iyi bir fikir değil .... Bu , ikisinin de bozulduğu karma bir sisteme yol açıyor . "Ne kadar net olabilirim? Umarım insanlar bu tavsiyeyi almadan önce yorumları okuyacaklardır. Bitirdim.
stanri

22

Benim durumumda, Debian Wheezy'de GLIBC_2.14 kullanarak (varsayılan olarak glibc 2.13'ü yükleyen) bir uygulamayı çalıştırmaya çalıştığımda (Ubuntu 12.04 LTS'de derlendi) hata ortaya çıkıyor.

Çalıştırmak için zor bir yol kullanıyorum ve doğru sonuç alıyorum:

  1. Ubuntu 12.04 LTS yazılımını indirin libc6ve indirinlibc6-dev

  2. dpkgBunları bir dizine kurmak için komutu çalıştırın ( /home/user/fakeroot/örneğin):

    $ 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. Komutunuzu belirtilen ile çalıştırın LD_LIBRARY_PATH:

    $ LD_LIBRARY_PATH=/home/user/fakeroot/lib/x86_64-linux-gnu/ YOUR_COMMAND
    
  4. memcpy()Başvurum yalnızca GLIBC_2.14’ü kullanıyor ve çalışıyor.

    Diğer uygulamalar için başarılı bir şekilde çalışıp çalışmayacağını bilmiyorum.


Teşekkürler! Bu talimatlar kolayca Shaka Packager'ı Debian Wheezy'de çalıştırmamı sağladı. exec env LD_LIBRARY_PATH=/home/user/fakeroot/lib/x86_64-linux-gnu/ YOUR_COMMAND "$@"Komutumu her seferinde LD_LIBRARY_PATH belirtmeye gerek kalmadan kolayca erişilebilir olacak şekilde görünen bir bash betiğine sarılıyorum.
Gabe Kopley

1

"Güvenli" dengesiz şubeyi denemeniz için birkaç seçenek var sanırım:

  • sanallaştırma
  • Görünen kök dizininiz olarak alternatif bir dizin seçtiğiniz için chrooting . Böylece bir dosya sistemi görüntüsü oluşturabilir ve gerekli paketleri elle yükleyebilirsiniz. Bu karmaşık bir süreçtir ve Debian'ın durumunda aşağıdakileri kullanmak çok daha kolaydır:
  • Bu bağlantıdaki Debian Wiki makalesini alıntılamak için deboostrap

    Debian temel sistemini, zaten kurulu olan bir sistemin alt dizinine yerleştirecek bir araç. Kurulum CD'si gerektirmez, sadece bir Debian deposuna erişim sağlar.

    Bu, debootstrapchrooting tekniğini kullandığı anlamına gelmez ; İç uygulamasının farkında değilim.


Debootstrap eğitimini kullandım ve tam ihtiyacım olan şeydi : wiki.debian.org/Debootstrap sid örneğini izledim ama bunun yerine jessie kullandım: debootstrap --arch amd64 jessie $MY_CHROOT http://http.debian.net/debian/ Teşekkürler!
Drew LeSueur
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.