如何将 apt 软件包降级到存档中的版本?

如何将 apt 软件包降级到存档中的版本?

我刚刚注意到,焦点建议的存储库已包含在 ubuntu 20.04 上的sources.list 中,尽管如此似乎不推荐。禁用后,命令

apt-show-versions | grep newer

显示了大约 30 个安装版本比存储库中的版本更新的软件包。有没有一种简单的方法可以将它们全部降级到可用版本?

答案1

我写了一个类似的在这里回答

为此,首先删除所有带有focal-proposedfrom/etc/apt/sources.list和 的行/etc/apt/sources.list.d/*

其次,我们将告诉 apt 允许降级。这意味着固定focalfocal-updates并且focal-security优先级高于 1000。/etc/apt/preferences.d/focal使用以下内容创建:

Package: *
Pin: release n=focal
Pin-Priority: 1001

Package: *
Pin: release n=focal-updates
Pin-Priority: 1002

Package: *
Pin: release n=focal-security
Pin-Priority: 1003

如果您不使用focal-updatesfocal-security跳过这些部分。

第三,运行以下命令:

sudo apt update
sudo apt upgrade
sudo apt dist-upgrade
sudo apt --fix-broken install
sudo apt autoremove

并在这些命令之间不断轮换,直到一切稳定为止。

最后删除/etc/apt/preferences.d/focal.


或者,您可以直接删除focal-proposed.这些包最终将迁移到focal-updates通过测试时,您将再次保持同步。

对于您的小增量,--fix-broken install可能autoremove没有必要,但当apt您阅读前面命令的输出时会告诉您。


对于看到这篇文章的其他人: 不支持降级。任何大幅降级都可能失败。这是一个非常微不足道的案例,但从 到focal可能bionic会是一场灾难,并导致系统崩溃。

答案2

稍微短一点。

cat /etc/apt/preferences.d/focal.pref 
Package: *
Pin: release n=focal
 
Pin-Priority: 1001

该记录为属于代号为“focal”的任何发行版的所有软件包版本分配高优先级。

仅当焦点建议不再处于活动状态时,注释才起作用。

相关内容