需要在Wheezy上安装glibc> = 2.14


22

我正在尝试使量角器能够执行e2e角度测试,但是量角器需要Selenium,而Selenium需要ChromeDriver,后者需要glibc2.14。我当前的开发盒正在运行glibc2.13 随附的Debian Wheezy 。我已经读到切换到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库的约束并不十分狭窄。它在文档或代码中的某处这样说,还是只是在某些软件包中作为依赖项列出?请注意,如果您还没有发布分发包,可能会出于不必要的原因而添加过于严格的依赖关系。
Faheem Mitha

我在上面的终端输出中显示了需要2.14或2.15的地方。但是现在一切都在工作。
克里斯,

Answers:


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以查看要安装的内容。您可以在Debian软件包跟踪系统中查看glibc软件包的状态(从Jessie开始,Debian将eglibc软件包重命名为glibc)。

您也可以等待Jessie 于4月25日发布


2
做到了。按照debian.org/doc/manuals/apt-howto/上的debian说明进行操作,然后运行列出的第二个命令即可正常运行。谢谢您的帮助。顺便说一句,我头脑中的不稳定是下一步而不是测试。
克里斯,

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状态。
斯坦里2015年

1
Debian.org明确提到这是一个坏主意。并非每个人都是系统管理员。OP要求一个安全的,建议的解决方案,该解决方案不会 破坏任何东西,并且该解决方案不满足任何这些条件。
斯坦里2015年

2
由于我们现在正在报价。OP:“有什么方法可以将glibc升级到2.14或2.15,而又不会破坏所有内容吗?” Debian.org:“为其他Debian版本添加存储库不是一个好主意。...这导致系统是两者的混合使用。 ”我能说得更清楚吗?希望人们在接受此建议之前先阅读评论。我受够了。
斯坦里2015年

22

在我的情况下,当我尝试在Debian Wheezy(默认情况下安装glibc 2.13)上使用GLIBC_2.14运行应用程序(在Ubuntu 12.04 LTS上编译)时出现错误。

我使用一种棘手的方式运行它,并获得正确的结果:

  1. 从Ubuntu 12.04 LTS 下载libc6并下载libc6-dev

  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 使用,并且可以正常工作。

    我不知道它是否可以成功用于其他应用程序。


谢谢!这些说明使我可以在Debian Wheezy上轻松运行Shaka Packager。我将命令包装在如下所示的bash脚本中,exec env LD_LIBRARY_PATH=/home/user/fakeroot/lib/x86_64-linux-gnu/ YOUR_COMMAND "$@"以便可以轻松使用该命令,而无需每次都指定LD_LIBRARY_PATH。
加布·科普利

1

我猜有几种选择可以“安全地”尝试不稳定的分支:

  • 虚拟化
  • chrooting,由此您可以选择一个替代目录作为您的明显根目录。因此,您可以创建文件系统映像并手动安装所需的软件包。这是一个复杂的过程,在Debian的情况下,使用以下命令可以轻松得多:
  • 在此链接引用Debian Wiki文章的deboostrap

    一个将Debian基本系统安装到另一个已经安装的系统的子目录中的工具。它不需要安装CD,只需访问Debian存储库即可。

    这并不意味着debootstrap使用chrooting技术。我不知道它的内部实现。


我使用了debootstrap教程,这正是我所需要的:wiki.debian.org/Debootstrap 我遵循了sid示例,但使用了jessie:debootstrap --arch amd64 jessie $MY_CHROOT http://http.debian.net/debian/ 谢谢!
Drew LeSueur'Apr 24'15
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.