如果 apt 无法更新我的所有软件包,我该如何运行 do-release-upgrade ?

如果 apt 无法更新我的所有软件包,我该如何运行 do-release-upgrade ?

情况是,由于我使用 Mozilla 存储库,并且该存储库没有受 Ubuntu 安装限制的更新(或者是它错误地执行了这些更新),所以sudo apt full-upgrade告诉我有 3 个新包正在等待安装,但深入研究依赖关系显示它想要一个较新版本的libc6libx11-xcb1以便能够将我更新到最新的 Firefox 108.0 和 Thunderbird 102.6。

现在正在看packages.ubuntu.com我看到所需版本的库位于 Kinetic (22.10) 存储库中。但我使用的是 22.04 (Jammy),在完成发布升级之前无法升级 Mozilla 软件包;但在安装完所有软件包之前无法进行发布升级... 这有问题!

我尝试过的:

我寻找一种强制更新的方法do-release-upgrade,因为一旦我更新到 Kinetic,Mozilla 软件包显然能够安装,所需的库位于该版本的 Kubuntu 中。不行,没有办法强制更新。

答案1

对我有用的方法(回答我自己的问题):我进入 /etc/apt/sources.list 并复制第一行:

deb http://gb.archive.ubuntu.com/ubuntu/ jammy main restricted

并为 Kinetic 重写了它,我添加了以下行,但没有删除 Jammy 行:

deb http://gb.archive.ubuntu.com/ubuntu/ kinetic main restricted

然后我运行了sudo apt update,它花费的时间比平时更长,并报告了数千个更新。我仅有的通过手动方式运行 Firefox 和 Thunderbird 所需的更新sudo aptitude(我认为您可以使用aptsynaptic任何其他包管理器,只要您能严格控制它),并确保只有最少数量的包/依赖项被自动添加。这些更新都是小更新,因此应该与 Jammy 上的所有内容兼容;我认为这有点冒险,但对于小更新和少量包来说,风险似乎相对较低。

一旦安装了所需的 libc6 (2.36-0ubuntu4) 和 libx11-xcb1 (1.8.1-2) 包及其依赖项,我就退出 aptitude。

sources.list然后,我通过注释掉 Kinetic 行将更改恢复为 ;使用 清除 apt sudo apt autoremove; sudo apt autoclean;然后运行 ​​apt 进行更新并使用 进行完全升级sudo apt update; sudo apt full-upgrade

最后,安装了 3 个 Mozilla 包——Firefox 108.0、Thunderbird 102.6 和 Thunderbird 区域设置文件。

现在 apt 已经完全更新,我可以运行do-release-upgrade

do-release-upgrade -m desktop --allow-third-party

安装现已完成,系统按预期运行。

注意:过去,我通过将所有条目/etc/apt/sources.listsource.list.d/文件条目从一个版本名称更改为另一个版本名称,然后运行 ​​apt-update 和 dist-upgrade(full-upgrade 是其同义词)来进行更新。这可能在这里有效;我所做的似乎只是一个快速修复,而我不必查看 do-release-upgrade 是否在后台执行任何花哨的操作。HTH。YMMV。

相关内容