我通过将 Kali 的东西添加到我的源列表中来创建弗兰肯斯坦的怪物,如本指南中所述:https://medium.com/@sany4sec/how-to-install-kali-linux-tools-in-ubuntu-or-linux-mint-b2ce8453964e
一切正常,但是运行 apt upgrade 时出现以下错误:
以下软件包具有未满足的依赖关系:
libc-bin :依赖:libc6 (< 2.36) 但已安装 2.37-12
libc6-dev:依赖:libc6(= 2.35-0ubuntu3.6)但已安装 2.37-12
Depends: libc-dev-bin (= 2.35-0ubuntu3.6)
libc6-dev-i386:依赖:libc6-i386(= 2.35-0ubuntu3.6)但已安装 2.37-12
libc6-dev-x32:依赖:libc6-dev-i386(= 2.37-12)但已安装 2.35-0ubuntu3.6
Depends: libc6-dev (= 2.37-12) but 2.35-0ubuntu3.6 is installed
区域设置:依赖:libc-bin(> 2.37)
我已在 source.list 中禁用 Kali 内容,并尝试了 sudo apt update、sudo apt upgrade,但错误仍然存在。基本上,我无法升级任何东西,我想恢复这一点。我怎样才能摆脱系统中的 2.37.-12 呢?
只是为了确认,sudo apt --fix-broken install 在这种情况下不起作用。请帮忙...我保证我再也不会尝试创造弗兰肯斯坦了!:/
答案1
该软件包的 Kali 版本比 Ubuntu 版本新,因此apt upgrade
认为 Kali 版本更可取。您需要告诉 APT 进行降级。降级的方式是通过优先:提高 Ubuntu 软件包的优先级,这样即使已安装的软件包具有较新的版本号,它们也会优先于已安装的软件包。输入以下内容/etc/apt/preferences
(降级结束后将其删除):
# Downgrade back to Ubuntu
Package: *
Pin: release o=Ubuntu
Pin-Priority: 1000
您可能需要除 之外或替代 的其他内容o=Ubuntu
,也许o=Ubuntu,a=jammy*
。运行apt-cache policy
以查看每个软件包源的“发布”标签。您需要一个与所有官方 Ubuntu 源匹配的模式。
请注意,就软件包管理器而言,这解决了问题。它将尝试降级所有软件包。它是否成功取决于软件包本身。大多数软件包不支持降级,因此您可能会在安装/删除脚本中遇到错误,或者您的系统可能会进入意想不到的状态。
供将来参考,请注意 Kali 吸引了许多不知道自己在做什么的人。鉴于 Kali 是为专业人士而非初学者设计的,这无疑是灾难的根源。我强烈建议忽略任何关于 Kali Linux 本身的博客文章或类似文章(而不是演示如何使用 Kali 方便打包的某些工具并顺便建议通过 Kali 使用它的文章)。
答案2
要安装配置的存储库中可用的特定旧版本软件包,您可以按以下格式指定版本号apt-get install package=version
对于您来说,解决立即出现的问题将如下所示:
$ sudo apt-get install libc6=2.35-0ubuntu3.6 libc-bin=2.35-0ubuntu3.6 libc6-dev=2.35-0ubuntu3.6 libc-dev-bin=2.35-0ubuntu3.6 libc6-dev-i386=2.35-0ubuntu3.6 libc6-dev-x32=2.35-0ubuntu3.6 locales=2.35-0ubuntu3.6
解决这些问题后,可能会出现其他问题 - 这取决于您想要调整的程度,您可能会发现只需备份主目录并重新安装就更容易了。
此外,如果您想尝试专为与其他发行版的核心包配合使用而设计的工具,Distrobox 也是一个不错的选择。或者,如果您只是想完全试用其他发行版,GNOME Boxes 提供了一个非常简单的界面。