quanfun

quanfun

腾讯云將CentOS Stream 9遷移到Rocky Linux 9

引言#

鑒於腾訊雲輕量服務器提供的鏡像選擇有限,無法直接獲取 Rocky Linux 9 的鏡像,決定採用手動方式遷移現有的 CentOS Stream 9(以下簡稱 CS 9)系統。使用了 Rocky Linux 官方提供的遷移腳本,以下是遇到的問題及解決方案

遷移#

CS 8 直接按照官方教程來即可,我測試時沒有出現 CS 9 一樣的問題

獲取腳本#

curl https://raw.githubusercontent.com/rocky-linux/rocky-tools/main/migrate2rocky/migrate2rocky.sh -o migrate2rocky9.sh

若國內網絡不佳
可以使用 stilleshan 提供的 github 加速服務

curl https://mirror.ghproxy.com/https://raw.githubusercontent.com/rocky-linux/rocky-tools/main/migrate2rocky/migrate2rocky.sh -o migrate2rocky9.sh

先下載再上傳也是可以的

執行腳本安裝#

賦予腳本可執行權限

chmod +x migrate2rocky.sh

執行腳本

./migrate2rocky.sh -r

執行腳本可以考慮使用 screen 或者 tmux,避免連接中斷導致系統崩潰

遇到的問題與初步分析#

在嘗試使用 Rocky Linux 9 的官方遷移腳本時,出現了一個關於 CentOS-Stream-BaseOS.repo 文件的錯誤提示,指出無法找到提供該文件的軟件包。

Error: No matches found. ...
Can't get package that provides /etc/yum.repos.d/CentOS-Stream-BaseOS.repo.

經檢查,CentOS-Stream-BaseOS.repo 內容如下:

[baseos]
name=CentOS Stream $releasever - BaseOS
baseurl=http://mirrors.tencentyun.com/$contentdir/$stream/BaseOS/$basearch/os/

同時,在腾訊雲的鏡像庫中並未發現 CS 9 的相關鏡像,僅找到了 CS 8 的鏡像資源。據此推測,可能是腾訊雲尚未提供 CS 9 的鏡像,或是其採用了非標準的鏡像路徑,導致 Rocky 腳本無法正確識別和定位所需包路徑。

解決過程#

思路#

改用清華大學的 CS 9 鏡像源,再嘗試遷移腳本

執行#

  1. 創建備份目錄,將 /etc/yum.repos.d/ 下的所有文件備份至 /root/backup/
  2. 根據清華大學鏡像站的教程,替換為鏡像源。得到新的 centos.repocentos-addons.repo 文件
  3. 清理並重建軟件包緩存 dnf clean all && dnf makecache
  4. 再次運行

問題#

依賴模塊問題#

在執行清華大學鏡像站推薦的 update_mirror.pl 腳本以更新鏡像源地址時,出現了 autodie.pm 模塊缺失的錯誤。通過 dnf 工具搜索並安裝 perl-autodie.noarch 模塊後,此問題得以解決。

dnf install perl-autodie.noarch

配置重複問題#

然而,執行 dnf 命令後發現多個倉庫被多次列出,這是由於腾訊雲將 CentOS Stream 的倉庫信息分散在了不同文件中,導致完成替換後原本的源仍然存在導致的。為了消除這一問題,需要刪除重複的定義
我直接刪除了原本的文件
注意:本操作應在使用清華大學教程中的腳本完成替換後執行

rm CentOS-Stream-*.repo

最後,運行 Rocky Linux 遷移腳本 ./migrate2rocky.sh -r,完成從 CentOS Stream 9 向 Rocky Linux 9 的遷移。

其他#

也可以直接刪除原文件,然後複製粘貼清華大學鏡像站點文件,但要注意權限問題

腳本似乎對文件名稱的大小寫有要求,腳本執行失敗可以考慮修改文件名為centos.repocentos-addons.repo

參考#

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。