如何将系统从 CentOS 7 更新到 CentOS 8?

如何将系统从 CentOS 7 更新到 CentOS 8?

假设从零开始重新安装不切实际,我该如何从 CentOS 7 更新到 CentOS 8?

我尝试做了yum install http://mirror.bytemark.co.uk/centos/8/BaseOS/x86_64/os/Packages/centos-release-8.0-0.1905.0.9.el8.x86_64.rpm,但显然没有达到预期的效果。yum update在此之后运行会让 yum 陷入无休止的递归尝试来解决依赖关系。

答案1

Red Hat 提供了从 EL 7.6+ 升级到 8 的工具leapp,但是根据这个 CentOS 错误,没有计划在 CentOS 上支持它。尝试将现有的 7.x 机器指向 8.x 存储库并运行yum update可能行不通;它从来都不是一个受支持的方法。你唯一的选择是重新安装。

答案2

手册里有 bug,所以试试这个(见评论)。如果出现问题,你需要解决问题,否则它就不起作用了。有些步骤很难逆转,你最终可能会得到无法启动的系统,所以要准备好从头开始拯救/重新安装系统,并做好备份。一些命令(发行版同步)需要很长时间,不能被打断,所以如果你知道如何使用screen 你会好起来的(即使更新后您无法重新连接,更新过程也会在屏幕上完成,检查日志通过tail -f /var/log/dnf.log)。如果没有,请从终端(无网络连接)或通过超稳定的网络连接进行升级。你被警告了。建议先更新整个系统yum -y update,然后重新启动并检查一切是否正常,这样你就会知道是什么损坏了升级以及升级前出现了什么问题。

# relax SELinux temporally (permissive mode)
setenforce 0
# switch to dnf
yum -y install dnf
# remove yum and its files
dnf -y remove yum yum-metadata-parser
rm -Rf /etc/yum /var/cache/yum
# switch to CentOS 8 repo
dnf -y upgrade http://vault.centos.org/8.0.1905/BaseOS/x86_64/os/Packages/centos-release-8.0-0.1905.0.9.el8.x86_64.rpm

将所有活动的 yum/dnf 存储库切换到版本 8,否则您会收到奇怪的错误(冲突的包等)发行版同步稍后。列出你的仓库rpm -qf /etc/yum.repos.d/* | sort -u,如果你得到类似epel-release-7-1.el7.noarch通过下面的命令更新 repos(URL 参数从以下位置复制)EPEL 页面)。重复此段,直到您拥有 v8 上的所有存储库(Chrome 存储库不必更新)。

dnf -y upgrade https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm

让我们继续:

# clean repos metadata
dnf clean all
# update repos packages to their latest version (centos-release, epel-release, ...)
dnf -y update \*release*
# remove all kernel packages (system is unbootable until new kernel is installed later), modify if using kernel-plus
rpm -e --nodeps $(rpm -q kernel)
# remove conflicting package
rpm -e --nodeps sysvinit-tools
# lets upgrade the system to version 8
dnf -y --releasever=8 --allowerasing --setopt=deltarpm=false distro-sync
# install kernel modules (you may need kernel-plus and kernel-plus-modules instead if you have obsolete hardware)
dnf -y install kernel-modules
# kernel package has been renamed so set DEFAULTKERNEL=kernel-core in /etc/sysconfig/kernel
sed -i -e s@DEFAULTKERNEL=kernel@DEFAULTKERNEL=kernel-core@ /etc/sysconfig/kernel
# refresh initramfs after additional kernel modules were installed
dnf -y reinstall kernel-core
# make sure all base packages are in place (change install to update if these groups are already installed)
dnf -y group install Core "Minimal Install"
# fix SELinux labels during shutdown (it will take a time)
touch /.autorelabel

复制/拍摄文件。如果 GRUB 加载程序在启动时进入 shell 提示符,则/etc/sysconfig/grub可能需要该文件的内容(根文件系统信息)。检查 iniramfs 映像中的模块列表和数量GRUB_CMDLINE_LINUXlsinitrd /boot/initramfs-4*.img | grep -c ko.xz

CentOS 8 使用新的基础生命科学通过目录进行配置/boot/loader/entries/,每个内核都有自己的每个 GRUB 菜单项的配置文件(它们按字母顺序排序,而不是按日期/时间排序),因此/etc/grub2.cfg没有菜单项,也不需要使用内核进行更新。 CentOS 8 淘汰了网络脚本,并转向网络管理器。如果您的网络接口由网络脚本处理,请确保您已network-scripts安装包并且已启用此服务(systemctl enable network.service)。

祈祷好运,随身携带可启动的 CentOS 8 DVD(或 USB 记忆棒)来拯救您的系统并输入reboot启动新系统(SELinux 自动重新标记将需要一段时间,按下ESC键查看启动屏幕上发生的情况,完成后会重新启动一次)。

成功重启后,您可能需要检查留下了哪些配置文件通过rpmconf -a来自包rpmconf(该包在 EPEL 仓库中,因此您需要先通过 启用该仓库dnf -y install epel-release)。

一些软件包将不再属于 CentOS 8 仓库(孤儿),您可以按 列出它们dnf repoquery --extras。 删除dnf remove <package>,按 全部删除dnf remove $(dnf repoquery --extras)。 列表树叶通过dnf repoquery --unneeded(删除部分或全部)。

检查 SELinux重新启动后拒绝消息ausearch -m avc --start recent(如果您有自己的规则或非标准设置,请修复它们)。检查/var/log/messages/var/log/boot.logjournalctl -xe是否存在错误和警告。设置自动更新(如果你有yum-cron)。删除救援内核rm /boot/vmlinuz-0-rescue* /boot/initramfs-0-rescue*并重新安装内核以获得新的 GRUB 救援菜单项为 CentOS 8 启动dnf -y reinstall kernel-core救援内核(救援内核包含所有可能的驱动程序/模块)。设置适当的Python 的替代品通过alternatives --config python(选择版本 3 或旧版本 2)。

答案3

我能够使用本指南作为参考来更新一台运行 CentOS 7 的机器: https://www.tecmint.com/upgrade-centos-7-to-centos-8/

由于我遇到了 gpg 密钥问题,按照本指南中的建议直接更新到 v8.1,因此我认为我必须搜索正确的镜像包才能升级到 v8.0。

因此,对于步骤 4,这是我使用的命令:

# dnf install http://mirror.bytemark.co.uk/centos/8.0.1905/BaseOS/x86_64/os/Packages/centos-release-8.0-0.1905.0.9.el8.x86_64.rpm

(请注意 URL 中的版本号变化 8 -> 8.0.1905)

我不需要安装指南中提到的centos-repos内容centos-gpg-keys,而是能够继续执行指南的后续步骤。

注意:虽然我不会在生产服务器上使用它。我宁愿进行迁移。如果不能,请确保您已彻底备份所有内容(数据和配置)。

我希望这有帮助!

干杯,D

相关内容