【Linux】將CentOS 版本從Linux 8 更新至 Stream 8

原本的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 刪掉就可以重新服務了