本文主要介紹在Linux作業系統遷移時,遷移任務出錯提示“Command 'yum -y distro-sync' returned non-zero”資訊時的問題描述、問題原因及其解決方案。
問題描述
在使用SMC作業系統遷移時,遷移任務出錯提示“Command 'yum -y distro-sync' returned non-zero”資訊。
問題原因
遷移至Anolis OS充分利用了yum distro-sync機制來實施遷移,該命令將當前系統中所有CentOS提供的軟體包重裝為Anolis OS源上的包,涉及到軟體包的依賴解析、下載和安裝。該命令執行耗時較長。如果該命令執行過程中意外中斷,再次執行時會直接報錯,導致遷移無法繼續。
解決方案
當
yum distro-sync意外中斷時,需要按照命令執行的階段來看問題現象。執行升級過程前中斷
如軟體包依賴解析階段,下載階段,只要沒有開始執行軟體包的安裝,此時再次執行
yum distro-sync能夠正常運行。軟體包開始安裝過程中意外中斷
軟體包衝突問題,此時再次執行
yum distro-sync會出現報錯資訊。yum distro-sync中斷時機不同,涉及到的報錯軟體也會有所不同,本樣本以下圖報錯資訊為例。
執行以下命令,查看報錯的軟體包nginx在系統中的安裝情況。
rpm -q nginx查詢發現Nginx安裝了第三方倉庫的Nginx相關不相容包,導致衝突。
執行以下命令,卸載第三方倉庫的Nginx相關不相容包。
rpm -e nginx*卸載過程中如果出現依賴無法卸載,則可以將其依賴一起卸載。
執行
yum distro-sync查看是否有報錯。如果能正常執行,執行以下命令,繼續遷移。
當遷移到Anolis OS時
python3 /usr/sbin/centos2anolis.py -c當遷移到Alibaba Cloud Linux時
python3 /usr/sbin/centos2alinux.py -c
如果還是報錯,則需要繼續解決報錯問題。
問題排查解決後,可參考查看和運行SMC用戶端,運行SMC用戶端命令
./go2aliyun_client --rerun --skipgrub來重試。