自动升级

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 SoftwareApper 等)安装包,则这些包可能会列出,甚至会包含重要的应用程序和系统软件包,务必要十分小心。

解决升级后遇到的问题

如果您升级后,系统有问题,可能需要以下步骤。

重建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

手动升级

升级至 fc30

sudo systemctl isolate multi-user.target  # 切换至 TUI$ sudo dnf upgrade
sudo dnf clean all
sudo dnf distro-sync --releasever=30 --setopt=deltarpm=false --disablerepo=\* --enablerepo=fedora --enablerepo=updates --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)

最新文章

  1. 茂名石化BPM应用实践 ——业务协同及服务共享平台建设和应用
  2. aspnet_isapi.dll设置图文介绍.net的程序实现伪静态
  3. java9
  4. vs2012 检测到有潜在危险的 Request.Form 值
  5. Rest(Restful)风格的Web API跟RPC风格的SOAP WebService--这些名词都啥意思?
  6. lua技巧分享之保护执行
  7. JavaScript之字符串
  8. Java写一个简单学生管理系统
  9. js作用域与作用域链
  10. insertBefore 和 insetAfter函数详解
  11. MyDAL - .Where() & .And() & .Or() 使用
  12. Java 的 clone 方法 && 浅复制和深复制
  13. rimraf 跨平台删除文件
  14. wget 网站扒取
  15. Objective-C中Block的常见用法
  16. JS DOM操作(五) Window.docunment对象——操作元素
  17. seq2seq模型以及其tensorflow的简化代码实现
  18. 3ds Max 中的导航控件SteeringWheels入门介绍
  19. 从jar包还原出java源码(项目文件)
  20. [spring] 对实体 "characterEncoding" 的引用必须以 ';' 分隔符结尾

热门文章

  1. Table is marked as crashed and should be repaired 解决办法
  2. Spider_基础总结3_BeautifulSoup对象+find()+find_all()
  3. MySQL全面瓦解10:分组查询和聚合函数
  4. nginx安装 linux
  5. 《.NET 5.0 背锅案》第4集:一个.NET,两手准备,一个issue,加倍关注
  6. 阻塞队列的take、offer、put、add的一些比较
  7. Redis订阅
  8. ctfshow之Web入门刷题记(从89开始,持续更新)
  9. webug第十三关:XSS
  10. NO.A.0004——Git私有服务器部署/makefile方式/本地与Git服务器代码交换