Debian Squeeze 中的 libc6 版本错误——我可以恢复吗?

Debian Squeeze 中的 libc6 版本错误——我可以恢复吗?

在尝试使一些 ruby​​ gem 工作时,我发现我需要安装 dev ruby​​ 包,这显然需要 dev libc6。当我尝试安装它时(使用经过批准的 squeeze apt-sources),我发现最新的 libc6-dev 与我当前的 libc 版本不同步。
事实证明,我应该使用的 libc6 版本(根据 apt)应​​该是 libc6 2.11.3-2。而我使用的是 libc6 2.13-7。在某个时候,用户肯定使用上游源来做某事,并且它抓取了新的 libc6。

我的问题是:如果我想重新与我的操作系统的批准版本保持一致,我是否需要卸载 libc6 及其所有依赖程序,然后通过 apt-get 重新安装它们,或者有没有更好的方法来做到这一点?

我还发现最新的 libc6-dev 与我当前拥有的 gcc 版本(4.4)不兼容,所以除非我也这样做,否则继续前进不是一个选择。

编辑:我们最终使用的解决方案是使用 aptitude 下载.deb 文件,然后使用 dpkg 安装它们。

例如,导航到 /var/cache/apt/archives(只是为了将它们保存在 apt-get 放置它们的同一位置)

执行以下操作:

aptitude download libc6 -t squeeze
dpkg --force-depends -i <name of package>.deb

这解决了该问题,但显然它引起了另一组依赖性问题。每个问题都可以用相同的方式解决。

aptitude download libc-bin -t squeeze
dpkg --force-depends -i <name of package>.deb

答案1

按照Debian 软件包存储库,Squeeze 确实使用了 2.11.3-2 版本的 libc6。因此,如果您安装了较新的版本,则您可能正在跟踪 Wheezy、Sid 或其他一些非官方存储库,或者手动安装了 libc6。检查您的/etc/apt/sources.list/etc/apt/sources.list.d/*

无论哪种方式,您都可以使用以下方式安装所需的版本Synaptic 软件包管理器。打开它,找到包,选择包 ->原力版从菜单中。您可以从配置的源中选择可用的版本。

编辑:

APT 确实有用于此目的的控制台命令,apt-get install <package>=<version>除此之外,您还可以指定要使用的 Debian 版本(与自动固定有关),前提是它在您的源中,使用apt-get -t squeeze install <package>(或stable代替squeeze),您=<version>也可以在此处使用。以 root 身份执行所有命令。在这种情况下从实验性恢复到稳定后,依赖关系可能会造成混乱,因此您可能必须手动降级 libc6 所依赖的软件包,以及可能的依赖项。

您也可以手动完成所有操作而无需检查依赖关系(如果您不确定万一出现问题该怎么办,则不建议这样做),方法是先使用 下载软件包apt-get download libc6,然后转到/var/cache/apt/archives/APT 存储下载软件包的位置并dpkg --force-downgrade -i <full_package_name>.deb以 root 身份发出。输入下载的软件包名称时,键入libc6然后使用 TAB 自动完成以使其更容易。

答案2

排序 sources.list --> 下载软件包并强制降级对我有用!之后我所要做的就是

apt-get -f install 

&&

apt-get autoremove

   

相关内容