重新安装从旧存储库安装且存在于新存储库中的所有软件包 (Apt)

重新安装从旧存储库安装且存在于新存储库中的所有软件包 (Apt)

我的基本系统是 Debian,并在sources.list 文件中附带了 ftp.debian.org。此后,我将最新的 Ubuntu 存储库添加到了我的sources.list 文件中,并取出了原始的 Debian 存储库。

不幸的是,我使用 Debian 存储库安装的所有软件包(也存在于 Ubuntu 存储库中)都没有被 apt update、upgrade、dist-upgrade 或 full-upgrade 替换。

那么,如何强制从旧的和已删除的存储库中重新安装当前安装的软件包以及新存储库中存在的软件包呢?

答案1

更安全的替代方法是保存的输出dpkg --get-selections,使用 重新安装 Ubuntu 的机器,然后使用dpkg --set-selections在 Ubuntu 上安装同一组软件包。

有可能变得容易做你想做的事。 但首先要警告:这种类型的更改很容易导致系统无法启动或以其他微妙或不那么微妙的方式被破坏。 您应该做好充分准备,要么解决难题,要么重新安装并从备份恢复数据。

您需要为 Ubuntu 软件包创建一个优先级至少为 1000 的 apt pin。这允许 apt 安装 Ubuntu 版本,即使这意味着降级。/etc/apt/preferences.d/ubuntu使用此内容创建:

Package: *
Pin: release o=Ubuntu
Pin-Priority: 1001

您应该更新/etc/apt/sources.listubuntu-keyring手动安装软件包,然后运行apt update​​。 (听起来您已经完成了这些步骤。)然后您可以尝试apt full-upgrade将所有软件包移动到 Ubuntu 版本。

/etc/apt/preferences.d/ubuntu完成后移除。

请注意,Debian 和 Ubuntu 对 Linux 内核元软件包使用不同的命名,因此您需要手动卸载 Debian 软件包(例如linux-image-amd64),安装 Ubuntu 软件包(例如linux-image-generic),并且可能手动删除 Debianlinux-image-*-amd64软件包。

相关内容