一、背景

centos7版本限制,某软件没有centos7版本的安装包,故需要将centos7升级成centos8.

二、环境准备

centos7.9 image.png 注意: 存在数据库的则需要先备份数据库数据。

三、实施

3.1 安装 yum-utils、epel-release、rpmconf 、dnf

yum -y install yum-utils epel-release rpmconf dnf

3.2 检查本地环境并清理有影响的rpm包

package-cleanup --problems	# 列出有依赖问题的包
package-cleanup --orphans   # 列出本机安装在当前仓库不可用的包
package-cleanup --leaves    # 列出没有依赖的rpm包
dnf remove yum gcc dracut-network sysvinit-tools -y	#更新源后要重新下载的
dnf clean all
rpm -vv --rebuilddb  # rpm数据库rebuild,避免一些残留和数据库损坏

3.3 更新yum的仓库

#备份仓库
mkdir /etc/yum.repos.d/bak_el7/ && mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/bak_el7/
#使用阿里源仓库(https://developer.aliyun.com/mirror/centos)
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo

3.4 升级系统centos-linux-release

dnf install https://repo.huaweicloud.com/centos-vault/8.5.2111/BaseOS/x86_64/os/Packages/centos-linux-release-8.5-1.2111.el8.noarch.rpm


[root@controller ~]# cat /etc/redhat-release 
CentOS Linux release 8.5.2111

3.5 删除旧内核

rpm -qa | grep kernel
rpm -e `rpm -qa | grep kernel`
rpm -vv --rebuilddb

3.6 更新系统使用的包

dnf distro-sync

3.7 使用原来的仓库

mv /etc/yum.repos.d/CentOS-Base.repo.rpmsave /etc/yum.repos.d/CentOS-Base.repo
dnf makecache

3.8 升级系统所有的安装包到el8版本

dnf distro-sync --allowerasing
dnf -y --releasever=8 --allowerasing --setopt=deltarpm=false distro-sync

3.9 安装之前3.2卸载的安装包和内核

dnf install gcc dracut-network sysvinit-tools vim -y	
dnf -y install kernel kernel-core

3.10 卸载残留的el7的安装包

rpm -qa | grep el7 | xargs dnf remove -y

3.11 重启操作系统

reboot

四、总结

慎重升级,需要做快照,或将原数据迁移,使用rpm -qa | grep el7检查是否还有el7的包,有的话则需更新成el8。