dnf-plugin-system-upgrade
是DNF
包管理器的插件,用于将系统升级到当前版本的Fedora
。
在执行升级之前备份数据,因为每次系统升级都存在潜在风险,导致数据丢失或损坏。作为预防措施,应该通过创建数据备份,以防出现问题,确保在升级过程中不会丢失重要文件。
$ sudo dnf update --refresh
dnf-plugin-system-upgrade
$ sudo dnf install dnf-plugin-system-upgrade
$ sudo dnf system-upgrade download --releasever=40
Before you continue ensure that your system is fully upgraded by running "dnf --refresh upgrade". Do you want to continue [y/N]: y
--releasever=
后面改成你需要的Fedora
版本号,系统更新最多只能跨两个版本号。
--allowerasing
选项删除依赖损坏的包。这可能是第三方源还未进行更新。建议卸载这些依赖不满足的包。带上--best
选项,可查看依赖问题的详细信息。导入新的GPG key
:
Importing GPG key 0xA15B79CC:
Userid : "Fedora (40) <[email protected]>"
Fingerprint: 115D F9AE F857 853E E844 5D0A 0727 707E A15B 79CC
From : /etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-40-x86_64
Is this ok [y/N]: y
Key imported successfully
当出现以下内容即下载完成:
Complete!
Transaction saved to /var/lib/dnf/system-upgrade/system-upgrade-transaction.json.
Download complete! Use 'dnf system-upgrade reboot' to start the upgrade.
To remove cached metadata and transaction use 'dnf system-upgrade clean'
The downloaded packages were saved in cache until the next successful transaction.
You can remove cached packages by executing 'dnf clean packages'.
$ sudo dnf system-upgrade reboot
大部分配置文件是存储在 /etc
目录下。如果您更改了包的配置文件,RPM 会使用.rpmnew
(新的默认配置文件)或.rpmsave
(备份的旧配置文件)创建新文件。您可以搜索这些文件,或使用rpmconf
简化此过程的工具。
# 安装rpmconf
$ sudo dnf install rpmconf
$ sudo rpmconf -a
如果您使用rpmconf
升级包附带的系统配置文件进行升级,则某些配置文件可能会发生变化。升级后,您应该验证/etc/ssh/sshd_config
、/etc/nsswitch.conf
、/etc/ntp.conf
以及其他配置文件内容是否符合预期。例如,如果 OpenSSH 升级,则sshd_config
恢复为默认包配置。
随着每个版本的发布,Fedora
都会淘汰一些软件包。原因有多种:软件包变得过时,或者它们的上游已经不更新了。Fedora
不再分发这些软件包;但是,它们仍然在您的系统上。这些软件包将不会获得升级。强烈建议删除它们。
$ sudo dnf repoquery --unsatisfied
该列表应该为空,但如果不是这种情况,请考虑删除它们,因为它们不太可能起作用。
$ sudo dnf repoquery --duplicates
列出重复的包,通常不会有重复包存在,如果有,可以使用以下方法删除它们:
$ sudo dnf remove --duplicates
$ sudo dnf list extras
对于来自官方存储库的软件包,应安装最新版本。但是,系统上仍然存在的某些软件包可能不再位于存储库中。如果您看到不需要或不使用的软件包,可以使用以下命令将其删除:
$ sudo dnf remove $(sudo dnf repoquery --extras --exclude=kernel,kernel-\*)
您可以安全地删除不再使用的软件包:
$ sudo dnf autoremove
旧内核在执行 dnf autoremove
后并不会被删除,这是有意设计的,防止误删。
当启动到新的内核,如果一切正常可以删除以前旧的内核来节省空间。可以使用以下脚本:
#!/usr/bin/env bash
old_kernels=($(dnf repoquery --installonly --latest-limit=-1 -q))
if [ "${#old_kernels[@]}" -eq 0 ]; then
echo "No old kernels found"
exit 0
fi
if ! dnf remove "${old_kernels[@]}"; then
echo "Failed to remove old kernels"
exit 1
fi
echo "Removed old kernels"
exit 0
升级后,文件系统中可能存在一些断开的dangling`的符号链接。您可以通过安装符号链接实用程序并删除旧链接来清理这些断开的符号链接:
$ sudo dnf install symlinks
安装该应用程序后,您可以检查断开的符号链接,如下所示,-r
表示递归:
$ sudo symlinks -r /usr | grep dangling
验证损坏的符号链接列表后,您可以删除它们,如下所示。-d
表示删除。
$ sudo symlinks -r -d /usr