Потрібно встановити glibc> = 2.14 на Wheezy


22

Я намагаюся отримати транспортир роботу для виконання e2e кутового тестування, але транспортир вимагає Селена , який вимагає ChromeDriver , який вимагає glibc2.14. У моєму поточному вікні розробки працює Debian Wheezy, який постачається з glibc2.13. Я читав, що перехід на нестабільну гілку Debian забезпечить доступ glib-2.14, але з того, що я почув нестабільне, досить ... нестабільно.

Чи є спосіб, коли я можу оновити glibcдо 2.14 або 2.15, не ризикуючи все зламати? Або можливо переключитися назад із нестабільної гілки Debian, якщо все почне ламатись?

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 вимагає glibc 2.14? Взагалі пакети високого рівня не мають дуже вузьких обмежень для бібліотеки С. Це написано десь у документації чи коді, або він просто вказаний як залежність у якомусь пакеті? Будьте в курсі, якщо ви ще цього не зробили, що пакети дистрибуції можуть додавати надто суворі залежності без поважних причин.
Faheem Mitha

Я додав вихідний термінал вище, показуючи, де потрібно 2.14 або 2.15. Однак зараз все працює.
chris

Відповіді:


23

Вам не доведеться переходити на нестабільний, щоб отримати glib> = 2.14. Насправді, тестова гілка (зараз стабільна, або Джессі) має glib-2.17, який можна вибрати лише додавши тестовий сховище та запустивши:

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

або,

sudo apt-get -t testing install libc6-dev

Ви можете додати комутатор, --dry-runщоб побачити, що буде встановлено перед рукою. Ви можете побачити статус пакета glibc в системі відстеження пакунків Debian (Debian перейменований на пакет eglibc, щоб просто glibc від Jessie далі).

Можна також просто чекати звільнення Джессі 25 квітня .


2
Це і вдалося. Дотримуючись інструкцій debian на сайті debian.org/doc/manuals/apt-howto/…, тоді виконання другої вказаної вами команди працювало чудово. Дякую за допомогу. До речі, у мене в голові було те, що наступним кроком замість тестування став нестабільний .
chris

1
Жодне з них не працювало для мене. Перший метод вироблявся, E: The value 'testing' is invalid for APT::Default-Release as such a release is not available in the sourcesа другийE: Version '2.17-7' for 'libc6-dev' was not found
Шон ДеНігріс

1
Це прийняте рішення дійсно повинно мати попередження. Я дотримувався цього і закінчив "FrankenDebian": wiki.debian.org/DontBreakDebian#Don.27t_make_a_FrankenDebian. Потім я провів наступні 2-3 години, боровшись із виходу з пекла залежності і повернувши свою систему до стабільної Wheezy.
stanri

1
Debian.org прямо зазначає, що це погана ідея. Не кожен є сисадміном. ОП попросило безпечне, рекомендоване рішення, яке не порушує жодне слово, і це рішення не відповідає жодному з цих критеріїв.
станрі

2
Оскільки ми зараз цитуємо речі. ОП: "Чи є спосіб я оновити glibc до 2.14 або 2.15, не ризикуючи все зламати ?" Debian.org:"можливо не додати репозиторії для інших випусків Debian .... Це призводить до того, що система є розбитою сумішшю цих двох. "Наскільки ясніше я можу бути? Сподіваємось, люди прочитають коментарі, перш ніж приймати цю пораду. Я все.
stanri

22

У моїй ситуації помилка з’являється, коли я намагаюся запустити додаток (скомпільований на Ubuntu 12.04 LTS) за допомогою GLIBC_2.14 на Debian Wheezy (який встановлює glibc 2.13 за замовчуванням).

Я використовую складний спосіб запустити його та отримати правильний результат:

  1. Завантажте libc6та libc6-devз Ubuntu 12.04 LTS

  2. Запустіть dpkgкоманду, щоб встановити їх у каталог ( /home/user/fakeroot/наприклад):

    $ 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. Виконайте команду із вказаними LD_LIBRARY_PATH:

    $ LD_LIBRARY_PATH=/home/user/fakeroot/lib/x86_64-linux-gnu/ YOUR_COMMAND
    
  4. Моя програма використовує лише memcpy()GLIBC_2.14, і вона працює.

    Я не знаю, чи буде це успішно працювати для інших програм.


Спасибі! Ці інструкції дозволили мені легко запустити Shaka Packager на Debian Wheezy. Я загортаю свою команду в скрипт bash, який виглядає exec env LD_LIBRARY_PATH=/home/user/fakeroot/lib/x86_64-linux-gnu/ YOUR_COMMAND "$@"так, що команда є легко доступною, не потрібно вказувати LD_LIBRARY_PATH кожен раз.
Gabe Kopley

1

Я думаю, є кілька варіантів для того, щоб спробувати нестабільну гілку "безпечно":

  • Віртуалізація
  • Хротування, за допомогою якого ви обираєте альтернативний каталог як ваш очевидний кореневий каталог. Таким чином, ви можете створити образ файлової системи та встановити необхідні пакети вручну. Це складний процес, і він значно полегшується у випадку Debian з використанням:
  • deboostrap, який, цитуючи статтю Debian Wiki за цим посиланням, є

    інструмент, який встановить базову систему Debian у підкаталог іншої, вже встановленої системи. Для цього не потрібен інсталяційний компакт-диск, а лише доступ до сховища Debian.

    Це не означає, що debootstrapвикористовується техніка хротування; Я не знаю про її внутрішню реалізацію.


Я використовував підручник з debootstrap, і це було саме те, що мені потрібно: wiki.debian.org/Debootstrap я наслідував приклад sid, але замість цього використовував jessie: debootstrap --arch amd64 jessie $MY_CHROOT http://http.debian.net/debian/ Дякую!
Дрю Лесюер
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.