Нужно установить glibc> = 2.14 на Wheezy

22

Я пытаюсь заставить Protractor работать для выполнения углового тестирования e2e, но для транспортира требуется Selenium, для которого требуется 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? В общем, пакеты высокого уровня не имеют очень узких ограничений на библиотеку C. Говорит ли это где-нибудь в документации или в коде, или он просто указан как зависимость в каком-то пакете? Помните, что если вы еще этого не сделали, то в дистрибутивные пакеты могут быть добавлены слишком строгие зависимости без веской причины.
Фахим Митха
Я добавил вывод терминала, показывающий, где требуется 2.14 или 2.15. Однако сейчас все работает.
Крис

Ответы:

23

Вам не нужно переключаться на нестабильную версию, чтобы получить glib> = 2.14. Фактически, ветвь тестирования (теперь стабильная, или Jessie) имеет 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 апреля .

Braiam
источник
2
Это сделал это. Следуя инструкциям debian по адресу debian.org/doc/manuals/apt-howto/…, тогда вторая команда, которую вы перечислили, работала отлично. Спасибо за помощь. Кстати, у меня было в голове, что нестабильность была следующим шагом вместо тестирования.
Крис
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 часа, борясь с адом зависимости и возвращая свою систему к стабильному Уизи.
Станри
1
Debian.org прямо упоминает, что это плохая идея. Не каждый является системным администратором. ОП запросил безопасное, рекомендованное решение, которое ни в коей мере не нарушает, и это решение не соответствует ни одному из этих критериев.
станри
2
Так как мы цитируем вещи сейчас. ОП: «Можно ли как-нибудь обновить glibc до 2.14 или 2.15, не рискуя все испортить ?» Debian.org:"Неуместно добавлять репозитории для других выпусков Debian ... Это приводит к тому, что система представляет собой смесь двух компонентов. "Насколько яснее я могу быть? Надеемся, что люди прочитают комментарии, прежде чем принять этот совет. Я задолбался.
станри
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.
Гейб Копли
1

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

  • Виртуализация
  • Chrooting, посредством чего вы выбираете альтернативный каталог в качестве вашего очевидного корневого каталога. Таким образом, вы можете создать образ файловой системы и вручную установить необходимые пакеты. Это сложный процесс, и в случае с Debian его значительно проще:
  • deboostrap, который, цитируя статью вики Debian по этой ссылке,

    инструмент, который установит базовую систему Debian в подкаталог другой, уже установленной системы. Для этого не требуется установочный компакт-диск, просто доступ к репозиторию Debian.

    Это не означает, что debootstrapиспользуется метод chroot; Я не знаю о его внутренней реализации.

Джозеф Р.
источник
Я использовал учебник по debootstrap, и это было как раз то, что мне было нужно: wiki.debian.org/Debootstrap Я последовал примеру sid, но вместо этого использовал jessie: debootstrap --arch amd64 jessie $MY_CHROOT http://http.debian.net/debian/ Спасибо!
Drew LeSueur