注:本文的方法在腾讯云服务器上面实施成功,具体操做前请备份好服务器上的重要数据。node
步骤一:安装epel存储库shell
yum install epel-release -yvim
步骤二:安装yum-utils工具
centos
yum install yum-utils -y缓存
步骤三:解析rpm包服务器
yum install rpmconf -yssh
rpmconf -aide
package-cleanup --leaves工具
package-cleanup --orphansspa
步骤四:安装dnf
yum install dnf -y
步骤五:删除yum软件包管理器,由dnf包管理器接管
dnf remove yum yum-metadata-parser
rm -fr /etc/yum
步骤六:使用dnf来升级系统
dnf upgrade
删除原来的yum源
cd /etc/yum.repos.d/
cp *.repo ~/
rm -fr CentOS-*
步骤七:使用dnf安装CentOS 8发行包
dnf -y upgrade http://mirrors.aliyun.com/centos/8/BaseOS/x86_64/os/Packages/centos-release-8.0-0.1905.0.9.el8.x86_64.rpm
cd /etc/yum.repos.d/
ls
查看dnf源是不是centos8的
步骤八:升级EPEL存储库
删除原来的epel源
cd /etc/yum.repos.d/
rm -fr epel*
升级centos8的epel存储库
dnf -y upgrade https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
重建dnf缓存
clear
dnf makecache
命令执行后查看提示的源是不是 CentOS-8-AppStream,CentOS-8-Base,CentOS-8-Extras和EPEL,如不是或者还有其余的源,则须要从新作以上几步。
以下所示:
CentOS-8 - AppStream
CentOS-8 - Base
CentOS-8 - Extras
Extra Packages for Enterprise Linux 8 - x86_64
Metadata cache created.
步骤九:成功升级EPEL存储库后,请删除全部临时文件
dnf clean all
步骤十:删除用于CentOS 7的旧内核
查询安装了哪些内核
rpm -q kernel
按照输出结果依次删除:
rpm -e kernel-3.10......x68_ 64
这里的kernel-3.10......x68_ 64是rpm -q kernel查询出来的具体包名
若是出现依赖,则先删除依赖内核的包
步骤十一:删除有冲突的软件包
rpm -e --nodeps sysvinit-tools
步骤十二:升级centos8的包
dnf -y --releasever=8 --allowerasing --setopt=deltarpm=false distro-sync
这步很关键,若是dnf源正确的话会升级包,若是不正确则会报错,须要从新删除yum.repo.d目录中的全部文件,从新执行步骤七和步骤八从新安装dnf源
步骤十三:为CentOS 8安装新的内核
dnf -y install kernel-core
安装之后并不会当即生效,须要重启。
步骤十四:最后,安装CentOS 8最小软件包。
dnf -y groupupdate "Core" "Minimal Install"
这步是对步骤十二的一个补充。
这步可能会提示yum软件包安装失败,解决方法是删除/etc/yum目录,再从新运行安装命令:
rm -fr /etc/yum
dnf install yum -y
步骤十五:重启服务器
init 6
步骤十六:若是上面步骤正确无误,那系统应该能正常启动
启动好以后,用uname查看内核,已是CentOS 8 的4.18的内核了。
uname -a
Linux ygj-centos 4.18.0-80.11.2.el8_0.x86_64 #1 SMP Tue Sep 24 11:32:19 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
完成升级
步骤十七:开启root的远程登陆
升级完成后,系统可能默认禁止root用户远程登陆,致使xshell没法链接
须要登陆云服务器的控制台,使用vnc链接服务器,而后修改ssh设置
vim /etc/ssh/sshd_config
将 #PermitRootLogin yes 这一行前面的“#”去掉,而后重启sshd服务
systemctl restart sshd