我从 Debian11/KDE 升级到 Debian12,方法是运行sudo apt-get upgrade --without-new-pkgs
,释放分区上的一些磁盘空间(这也可能会破坏某些用户的升级!),然后运行sudo apt-get full-upgrade
。升级过程是这样的:
- 在安装了许多软件包后,我收到一个错误(详细信息如下),因此它返回了
Error: Sub-process /usr/bin/dpkg returned an error code (1)
。我解决了这个问题(详情如下) - 然后必须运行
sudo apt --fix-broken install
它升级了 libgmic1 和 gimp-gmic 并删除了一些软件包 - 由于根分区上的磁盘空间不足,我通过运行释放了磁盘空间
sudo rm -rf /var/cache/apt/archives/*
(刚刚安装的软件包的缓存占用了大量磁盘空间)。中断升级的错误很方便,因为它可以防止升级因磁盘空间不足而失败。 - 然后我
sudo apt-get full-upgrade
再次运行,没有错误就完成了。自从我删除了缓存后,它首先必须再次下载剩余的包。
根据/var/log/apt/history.log
这三个命令之间没有删除/安装任何软件包。在该日志中,它显示“plasma-systemmonitor:amd64(5.27.5-2,自动)”应该已通过命令安装apt-get full-upgrade
(它在“安装:”旁边列出了它)。然而,在这一切之后(升级到 Debian12)我注意到这个特定的包未安装并安装了此特定软件包。
现在我想知道是否有更多原本应该安装的软件包尚未安装。如何验证所有这些都已安装并且 Debian 升级已完成且没有丢失任何基本/核心软件包?显然,apt-get Upgrade 应该显示已安装软件包的任何依赖项是否丢失或者是否仍然有任何升级可用,但它既不显示最初应该安装的软件包,也不显示当前未安装哪些默认 Debian12 或 KDE 软件包的信息。
详细信息:我得到的输出/错误是:
Setting up usrmerge (37~deb12u1) ...
FATAL ERROR:
Both /lib/udev/mtp-probe and /usr/lib/udev/mtp-probe exist.
You can try correcting the errors reported and running again
/usr/lib/usrmerge/convert-usrmerge until it will complete without errors.
Do not install or update other Debian packages until the program
has been run successfully.
E: usrmerge failed.
dpkg: error processing package usrmerge (--configure):
installed usrmerge package post-installation script subprocess returned error exit status 1
Errors were encountered while processing:
usrmerge
我通过将旧文件移出目录(用于ls -l /lib/udev/mtp-probe and /usr/lib/udev/mtp-probe
检查旧文件是什么)来解决这个问题,直到我可以成功运行/usr/lib/usrmerge/convert-usrmerge
.
升级也可能因磁盘空间耗尽而中断,但每一步仅需要较少磁盘空间(或动态低于可用空间)的分段升级是一个单独的主题。