在尝试使一些 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