全部產品
Search
文件中心

Server Migration Center:出錯提示“Command 'yum -y distro-sync' returned non-zero”

更新時間:Jul 13, 2024

本文主要介紹在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源上的包,涉及到軟體包的依賴解析、下載和安裝。該命令執行耗時較長。如果該命令執行過程中意外中斷,再次執行時會直接報錯,導致遷移無法繼續。

解決方案

  1. yum distro-sync意外中斷時,需要按照命令執行的階段來看問題現象。

    • 執行升級過程前中斷

      如軟體包依賴解析階段,下載階段,只要沒有開始執行軟體包的安裝,此時再次執行yum distro-sync能夠正常運行。

    • 軟體包開始安裝過程中意外中斷

      軟體包衝突問題,此時再次執行yum distro-sync會出現報錯資訊。yum distro-sync中斷時機不同,涉及到的報錯軟體也會有所不同,本樣本以下圖報錯資訊為例。

      image

      1. 執行以下命令,查看報錯的軟體包nginx在系統中的安裝情況。

        rpm -q nginx

        查詢發現Nginx安裝了第三方倉庫的Nginx相關不相容包,導致衝突。

      2. 執行以下命令,卸載第三方倉庫的Nginx相關不相容包。

        rpm -e nginx*

        卸載過程中如果出現依賴無法卸載,則可以將其依賴一起卸載。

      3. 執行yum distro-sync查看是否有報錯。

        • 如果能正常執行,執行以下命令,繼續遷移。

          • 當遷移到Anolis OS時

            python3 /usr/sbin/centos2anolis.py -c
          • 當遷移到Alibaba Cloud Linux時

            python3 /usr/sbin/centos2alinux.py -c
        • 如果還是報錯,則需要繼續解決報錯問題。

  2. 問題排查解決後,可參考查看和運行SMC用戶端,運行SMC用戶端命令./go2aliyun_client --rerun --skipgrub來重試。