如何正确升级glibc?


10

我的NAS的固件带有一个相当老的版本glibc,即2.5。为了处理链接到*glibc 2.15的一些预编译二进制文件,我想对其进行升级。通过在chroot环境中进行一些简单的测试,我了解到简单地添加更新程序libc-2.15.so和更新符号链接libc.so.6将产生无法使用的系统。可能是由于依次libc-2.15.so链接到ld-linux.so.3了,所以当然也需要2.15版本而不是2.5版本。但是在我经历过多的反复试验之前,

手动升级glibc的正确步骤是什么?


*尽管被“静态” 链接,但它们动态链接到glibc ...


“为了应付一些预编译的二进制文件(尽管被“静态”链接,它们仍然动态链接到glibc ...),链接到glibc 2.15。” 除去括号,它简化为“为了处理链接到glibc 2.15的一些预编译二进制文件”。我不确定那是什么意思。
Faheem Mitha 2014年

@FaheemMitha感谢您指出这一点,但我从未意识到我忘了结束那句话-希望它现在变得更有意义
Tobias Kienzler 2014年

是的,它现在读起来更好,尽管具有嵌入式支架对提高清晰度没有帮助。我认为用更新的libc重建固件不是一种选择吗?
Faheem Mitha 2014年

@FaheemMitha现在被放逐了。不,不幸的是,固件包含一些专有组件:/
Tobias Kienzler 2014年

尼特皮克城。您用*标记文本,但在“脚注”中使用1。是的,这就是(为什么)专有软件很烂。寻找免费的第三方固件?或发展自己的。说起来容易做起来难。
Faheem Mitha 2014年

Answers:


7

升级标准库存在风险,因为某些程序和库可能取决于当前版本。

如果需要运行较新的程序,我的建议是安装完整的chroot版本。这需要更多的磁盘空间,但是比尝试更新libc更简单,风险也更低。Debian提供了一个便于在chroot中安装的工具:debootstrap。请参阅在debian / ubuntu中安装两个glibc(非常相似的情况)以获取更多说明,以及如何在64位Debian / Ubuntu上运行32位程序?有关在稍有不同的情况下的完整操作方法。


2
我担心的一样多......其实我目前使用的是chroot的安装Gentoo。为了编译非chroot的二进制文件,可能很容易将Gentoo的glibc降级,或者使用足够旧的版本……然后,我再次严重怀疑(或至少希望不是)这是最终的答案。
Tobias Kienzler 2013年

您说升级glibc“有风险”是什么意思?Glibc是向后兼容的,所以它通常应该可以工作,还是我在这里不明白?
尼尔斯

3
@Nils什么你错过的区别是应该。程序有时依赖于未记录的行为,这些行为在版本之间会发生变化。
吉尔斯(Gillles)“所以-别再作恶了”
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.