升级软件包后,以前的软件包版本丢失,因此我无法降级回以前的版本

升级软件包后,以前的软件包版本丢失,因此我无法降级回以前的版本

升级软件包后,当我运行时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一开始并不需要任何操作,也不会安装任何东西或对系统进行任何更改。

相关内容