情况是,由于我使用 Mozilla 存储库,并且该存储库没有受 Ubuntu 安装限制的更新(或者是它错误地执行了这些更新),所以sudo apt full-upgrade
告诉我有 3 个新包正在等待安装,但深入研究依赖关系显示它想要一个较新版本的libc6
,libx11-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
(我认为您可以使用apt
或synaptic
任何其他包管理器,只要您能严格控制它),并确保只有最少数量的包/依赖项被自动添加。这些更新都是小更新,因此应该与 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.list
和source.list.d/
文件条目从一个版本名称更改为另一个版本名称,然后运行 apt-update 和 dist-upgrade(full-upgrade 是其同义词)来进行更新。这可能在这里有效;我所做的似乎只是一个快速修复,而我不必查看 do-release-upgrade 是否在后台执行任何花哨的操作。HTH。YMMV。