Fedora 版本升级方法及注意事项
1. 一些经验
- 尽量在网速较快的情况下做升级操作;
- 把系统语言先修改成英文的(可更改系统语言配置文件:/etc/locale.conf),以防出现因中文编码问题打断升级过程;
- 系统升级过程中不要中断,被中断可能会出现包冲突的情况,详细请见后面“处理包冲突”一节。
- 出现问题多看系统日志。
2. 过程
1、 先更新当前系统软件包到最新:
sudo dnf upgrade --refresh
2、下载新版本所需的软件包,–releasever 参数指定需要升级至的版本:
sudo dnf system-upgrade download --releasever=24
如果是第一次升级系统大版本,可能需要为 DNF 单独安装 system-upgrade 组件才能运行上面的命令:
sudo dnf install dnf-plugin-system-upgrade
3、重启,并进入系统升级阶段:
sudo dnf system-upgrade reboot
3. 常见问题处理
3.1. 包冲突
在重启后进入升级阶段时,谨记不要轻易中断升级过程,因为系统是先安装新版本软件,再去清理老版本软件,在清理老版本软件之前打断升级过程就会出现包冲突。比如当前系统是 Fedora 23,要升级到 Fedora 24,在更新 Fedora 24 软件包阶段时被中断,一些软件就会同时存在 Fedora23、24 两个版本的包,这种情况叫作包冲突。如果系统关键组件(比如 Grub、Systemd 等)出现包冲突,系统是无法正常启动的。
发生包冲突后再去重新升级系统,会提示“file [冲突的包] from install of [冲突的包] conflicts with file from package”错误。这种情况可用命令:
rpm -q [冲突的包]
去查看包是否冲突,如:
rpm -q grub2
如果一个包返回了两个已安装的版本,说明发生了冲突。可用命令:
sudo package-cleanup --dupes
扫描系统中所有存在包冲突的软件。
一些网友给的方法是通过以下命令删除老版本的包:
rpm -e [包名] --nodeps # 不删除依赖的情况下删除某个包
但往往出现冲突的包不止一个,手动处理比较繁琐,系统升级中遇到包冲突可直接用 DNF 将所有包升级到最新版本来解决:
sudo dnf --releaserver=24 distro-sync
3.2. 证书问题
升级时,Fedora 会对官方源的包进行签名认证,当出现以下类似错误时,表明本地没有公钥:
warning: **.rpm: Header V3 RSA/SHA256 Signature, key ID f5282ee4: NOKEY ... GPG key retrieval failed: [Errno 14] curl#37 - "Couldn't open file /etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-x86_64"
可以从官方导入该公钥:
$ sudo rpmkeys --import https://getfedora.org/static/F5282EE4.txt # 注意这里文件名就是提示中的 key ID,并且文件名大写
key ID 可以从官网获得:https://getfedora.org/verify。