原本的CentOS 版本為 8.0.X
因為EOL,所以需要從CentOS Linux 升級成CentOS Stream
基本上跟循這個網站的教學進行更新:https://www.linode.com/docs/guides/migrate-from-centos-8-to-centos-stream/
先執行dnf update 發生錯誤,找到dnf log
後來知道:因為EOL,所以reposity 的url 改到別的地方,所以需要手動修改作業系統內的url
"moved to vault.centos.org where it will be archived permanently,
since we will not be able to provide updates to the content after the EOL date."
– https://www.centos.org/centos-linux-eol/
# 取代/etc/yum.repos.d/CentOS-* 底下的網址
# P.S. 有分s///g 跟s|||g 的原因是:如果要取代的內容中有"/" 或"|" 為了與指令的符號區隔,要選擇適合的分隔符號,要詳細可以參閱sed 的用法
sed -i "s/mirrorlist=/#mirrorlist=/g" /etc/yum.repos.d/CentOS-*
sed -i "s|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g" /etc/yum.repos.d/CentOS-*
取代完成並指令dnf update 進行第一次更新完畢
此時 /etc/yum.repos.d 內的 CentOS-* 檔案會變成 CentOS-Linux-*,所以將上面取代指令路徑修改成新的路徑
# 取代/etc/yum.repos.d/CentOS-Linux-* 底下的網址
sed -i "s/mirrorlist=/#mirrorlist=/g" /etc/yum.repos.d/CentOS-Linux-*
sed -i "s|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g" /etc/yum.repos.d/CentOS-Linux-*
修改完畢後再跑一次 dnf update 以確認更新完成
如果有出現以下錯誤
invalid configuration value failovermethod=priority in /etc/yum.repos.d/pgdg-redhat-all.repo
原因是CentOS 8 中的dnf 現在不支援 failovermethod 這個設定值了,而pgdg-redhat-all.repo
中有使用到,所以把它註解掉
sed -i "s/failovermethod=/#failovermethod=/g" /etc/yum.repos.d/pgdg-redhat-all.repo
前置作業處理完後,接下來就是
// 安裝 stream packages
dnf install centos-release-stream -y
// 切換 repository
dnf swap centos-{linux,stream}-repos -y
// 再次進行更新
dnf distro-sync -y
// 重新啟動
sudo reboot
// 確定CentOS 版本
cat /etc/centos-release
因為系統上有安裝MongoDB,重啟後服務會掛掉並指出錯誤:code=exited status=14
可以依照log 檔顯示的錯誤去修正,通常是相關目錄權限不足,或是把/tmp/mongodb-27017.sock
刪掉就可以重新服務了