升级软件包后,当我运行时apt-cache policy <package-name>
,我发现该软件包的先前版本不在列表中。
在 bind9-dnsutils 包升级之前,缓存列表显示该包的三个不同版本:
$ apt-cache policy bind9-dnsutils
bind9-dnsutils:
Installed: 1:9.16.1-0ubuntu2.8
Candidate: 1:9.16.1-0ubuntu2.9
Version table:
1:9.16.1-0ubuntu2.9 500
500 http://pl.archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages
500 http://pl.archive.ubuntu.com/ubuntu focal-security/main amd64 Packages
*** 1:9.16.1-0ubuntu2.8 100
100 /var/lib/dpkg/status
1:9.16.1-0ubuntu2 500
500 http://pl.archive.ubuntu.com/ubuntu focal/main amd64 Packages
我已成功将 bind9-dnsutils 软件包升级到最新版本。升级 bind9-dnsutils 软件包后,检查此软件包的缓存列表时,列表中未显示上一版本 1:9.16.1-0ubuntu2.8。
$ sudo aptitude install bind9-dnsutils=1:9.16.1-0ubuntu2.9
bind9-dnsutils:
Installed: 1:9.16.1-0ubuntu2.9
Candidate: 1:9.16.1-0ubuntu2.9
Version table:
*** 1:9.16.1-0ubuntu2.9 500
500 http://pl.archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages
500 http://pl.archive.ubuntu.com/ubuntu focal-security/main amd64 Packages
100 /var/lib/dpkg/status
1:9.16.1-0ubuntu2 500
500 http://pl.archive.ubuntu.com/ubuntu focal/main amd64 Packages
因此,如果我尝试降级到版本 1:9.16.1-0ubuntu2.8,我会收到以下错误消息:
Unable to find a version "1:9.16.1-0ubuntu2.8" for the package "bind9-dnsutils"
Unable to apply some actions, aborting
有没有办法在缓存中保留紧接着的上一个版本,以便在必要时可以回滚到该版本?
答案1
恭喜你通过 apt 从依赖地狱中解救出来。apt 做了它应该做的事情,以维护正确的软件包管理,这对于安装、删除和升级软件是必需的。如果你想在 Ubuntu 中添加类似于 Windows 中的系统还原功能的备份和还原功能,请在 Ubuntu 20.04 及更高版本中安装 timeshift 软件包。
sudo apt update
sudo apt install timeshift
Timeshift 是一款系统恢复实用程序,可定期拍摄系统快照。这些快照可在以后恢复以撤消系统更改。Timeshift 使用 rsync 创建增量快照,或使用 BTRFS 工具创建 BTRFS 快照。
另一方面,也许你不想安装 Timeshift,因为当你只想降级一个软件包时,它太重了。如果你能设法手动下载bind9-dnsutils_9.16.1-0ubuntu2.8_amd64.deb并降级 bind9-dnsutils 而不会产生未满足的依赖关系错误,那么您可以按照以下答案中的说明阻止 bind9-dnsutils 升级如何阻止特定包的更新?下载 bind9-dnsutils_9.16.1-0ubuntu2.8_amd64.deb 后,您可以通过运行以下命令检查它是否可以安装,而无需安装其他依赖项:
apt install --simulate ./bind9-dnsutils_9.16.1-0ubuntu2.8_amd64.deb
上述命令只是一种模拟。它sudo
一开始并不需要任何操作,也不会安装任何东西或对系统进行任何更改。