在debian / ubuntu中同时安装两个glibc


15

是否可以在同一台计算机上安装和使用两个不同的glibc版本。哪一个版本仅用于运行依赖于旧glibc二进制文件的旧版软件?

是否有可能借助程序包管理器(例如将“安装此程序包及其依赖项安装到”之类的东西/opt/old-glibc)来完成,而不是直接管理它


4
一定是,但是...哦,好痛苦。
tshepang 2011年

可能,但是您需要提供更多详细信息。确切地说是什么操作系统(Debian / Ubuntu的版本),更重要的是,什么是旧版软件,以及它使用的哪个libc版本?我想ldd会告诉你一些事情。如果可能,您可能需要重新编译旧版libc库和/或安装/重新编译支持软件包。根据您的应用程序的年龄,这可能会变得棘手。我看到当前的Debian libc6依赖于libc-bin (= 2.13-0exp5)libgcc1,所以libc6没有很多依赖关系,但是您仍然可能遇到问题。
Faheem Mitha

Answers:


8

是的,有可能。您必须非常注意库的加载路径,并且可能需要重新编译其他库。

作为减少摩擦的途径,我建议在chroot中安装旧版本的Debian或Ubuntu 。也就是说,创建一个目录,例如/old/etch,然后将较早的发行版安装在以该目录为根的树中;要运行该有问题的程序,请调用chroot以将其对文件系统的视图限制为/old/etch

Debian(或Ubuntu)附带了一个软件包,用于协助在chroot中安装另一个系统:schroot(dchroot的后继者)。首先,使用debootstrap安装较早的发行版(仅安装基本系统和程序所需的内容,而不安装服务器)。然后设置schroot方便地运行程序(用/dev/proc/home等“卫星”文件系统访问)。

因此计划是:先进行debootstrap,再进行dchroot。在如何在64位Debian / Ubuntu上运行32位程序中?,我提供了一个关于类似设置的教程-无论您运行的是不同版本的发行版,不同的体系结构还是不同的Debian-like发行版,仅需选择适当的软件包源即可,其余都相同。


如果已经安装了较新的版本,他可以从该版本开始,然后在较新的版本之上将较旧的版本安装到/old/etch吗?
n611x007 2012年

@naxa是的,事实上这里就是这种情况,但是如果您采用相反的方法(更新的版本在较旧的版本中),则它的工作方式相同。实际上,在写完此答案几天后,我确实写了一个debootstrap / schroot教程,我添加了链接。
吉尔斯(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.