自动升级
sudo dnf update --refresh # 更新系统包 sudo dnf install dnf-plugin-system-upgrade # 安装系统更新插件 sudo dnf system-upgrade download --refresh --releasever [32|33|rawhide] # 下载包 sudo dnf system-upgrade reboot # 重启执行升级操作
如果某些依赖不满足,升级将终止,可添加 --allowerasing
选项删除依赖损坏的包。这可能是第三方源还未进行更新。建议卸载这些依赖不满足的包。添加 --best
选项,可查看依赖问题的详细信息。
升级后操作
更新系统配置文件:
更新后,RPM将备份配置文件。搜索 .rpmnew
(新配置) .rpmsave
(旧配置),根据需要进行修改。或使用 rpmconf
工具进行处理。
sudo rpmconf -a
清理旧软件包:
sudo dnf repoquery --unsatisfied # 列出依赖问题的包,可以酌情删除这些包 sudo dnf repoquery --duplicated # 列出重复的包,一般的包不会有重复存在 sudo dnf list extras # 列出已从源中删除的包,可能包含第三方源的包$ sudo dnf autoremove # 删除不需要的包
注意:DNF 不需要一个包,是根据您是否明确要求安装它来决定的。这不意味着这个包是无用的。您需要删除您确实不需要的包。注意,PackageKit
有个已知的 Bug,它并不标记包是用户安装。如果您使用 PackageKit
(或 GNOME Software
, Apper
等)安装包,则这些包可能会列出,甚至会包含重要的应用程序和系统软件包,务必要十分小心。
解决升级后遇到的问题
如果您升级后,系统有问题,可能需要以下步骤。
重建RPM数据库:
如果您使用RPM/DNF工具时出现警告,可能需要重建RPM数据库。
sudo rpm --rebuilddb
使用 distro-sync
解决依赖问题:system upgrade
工具默认使用 distro-sync
升级系统。如果您的系统有些未升级的包有依赖问题,可手动执行 distro-sync
。这会同步源的软件包(某些包会降级)。
sudo dnf distro-sync sudo dnf distro-sync --allowerasing # 允许删除依赖损坏的包,务必进行确认
重新标记 SELinux 标签:
如果某些行为被禁止并收到 SELinux 警告,可能有些文件标签不正确。
sudo touch /.autorelabel reboot
手动升级
对于chroot方式安装的系统,手动升级更适用。
升级至 fc30
sudo systemctl isolate multi-user.target # 切换至 TUI$ sudo dnf upgrade sudo dnf clean all sudo dnf distro-sync --releasever=30 --setopt=deltarpm=false --nogpgcheck
#若需要指定未开启的其他库,可用下面的参数指定。
sudo dnf distro-sync --releasever=30 --setopt=deltarpm=false --disablerepo=\* --enablerepo=fedora_1 --enablerepo=updates_1 --nogpgcheck
sudo touch /.autorelabel
建议清理 /var/cache/yum
, /var/cache/dnf
, /var/cache/mock
, /var/lib/mock
等目录。
升级至 Rawhide
sudo dnf upgrade sudo dnf install dnf-plugins-core fedora-repos-rawhide sudo dnf config-manager --set-disabled fedora updates updates-testing sudo dnf config-manager --set-enabled rawhide sudo dnf clean -q dbcache plugins metadata sudo dnf distro-sync --releasever=rawhide --setopt=deltarpm=false --nogpgcheck sudo touch /.autorelabel
参考:
Fedora升级操作,轻易不要升级,如果升级请规范操作 (mamicode.com)