注:本文的方法在騰訊雲服務器上面實施成功,具體操做前請備份好服務器上的重要數據。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