5 線上升級 #
SUSE 提供了直觀的圖形工具和簡單的指令行工具,供您將執行中系統升級至新 Service Pack。兩個工具都提供 Service Pack「復原」支援及其他功能。本章提供有關如何使用這些工具執行 Service Pack 升級的分步說明。
5.1 概念綜覽 #
SUSE 會定期發佈 SUSE Linux Enterprise 系列的新 Service Pack。為了方便客戶移轉至新的 Service Pack,並最大程度減少停機時間,SUSE 支援在系統執行時進行線上移轉。
從 SLE 12 開始,YaST 移轉 (GUI) 與 Zypper 移轉 (指令行) 取代了 YaST Wagon。此項變更的優點在於:
在首個 RPM 更新之前,系統將永遠處於已定義的狀態。
在首個 RPM 更新之前,可以取消操作。
如果出現錯誤,可以輕鬆復原。
您可以透過系統工具執行「復原」 - 無需進行備份或還原。
使用所有有效儲存庫。
能夠跳過 Service Pack。
僅支援在 Service Pack 之間進行線上移轉。不支援透過線上移轉升級至新的主要版本。如需詳細資料,請參閱第 1 章 「升級路徑和方法」。
請透過離線移轉升級至新的主要版本。如需詳細資料,請參閱第 4 章 「離線升級」。
如果要升級的系統是 SUSE Manager 用戶端,則無法透過 YaST 線上移轉或 zypper migration
進行升級。請改為使用用戶端移轉程序。
《SUSE Manager Upgrade Guide》(SUSE Manager 升級指南)對此進行了說明。
5.2 Service Pack 移轉工作流程 #
Service Pack 移轉可透過 YaST、zypper
或 AutoYaST 執行。
開始 Service Pack 移轉之前,必須在 SUSE Customer Center 或本地 RMT 伺服器中註冊您的系統。也可以使用 SUSE Manager。
不論使用哪種方式,Service Pack 移轉都包含以下步驟:
在您的註冊系統上尋找可能的移轉目標。
選取一個移轉目標。
申請並啟用新的儲存庫。
執行移轉。
移轉目標清單取決於您已安裝和註冊的產品。如果您安裝的延伸沒有新的 SP 可用,則無法向您提供移轉目標。
您的主機可用的移轉目標清單將始終可從 SUSE Customer Center 取回,並取決於所安裝的產品或延伸。
5.3 取消 Service Pack 移轉 #
在移轉程序中,只能在特定階段取消 Service Pack 移轉:
在套件升級開始之前,僅對系統進行極少量的變更,例如對服務和儲存庫的變更。還原
/etc/zypp/repos.d/*
,以便回復到先前的狀態。在套件升級開始之後,可以使用 Snapper 快照回復到先前的狀態 (請參閱第 10 章 「使用 Snapper 進行系統復原和快照管理」)。
選取移轉目標後,SUSE Customer Center 會變更儲存庫資料。若要手動回復此狀態,請使用
SUSEConnect
--rollback
。
5.4 使用線上移轉工具 (YaST) 升級 #
若要透過 Yast 執行 Service Pack 移轉,請使用
工具。依預設,YaST 不會從協力廠商儲存庫安裝任何套件。如果某套件是從協力廠商儲存庫安裝的,YaST 會阻止該套件取代為來自 SUSE 的相同套件。執行 Service Pack 移轉時,YaST 會安裝所有推薦的套件。特別是在自訂精簡安裝的情況下,這樣會顯著增加系統的安裝大小。
若要變更此預設行為並只允許必要的套件,請調整 /etc/zypp/zypp.conf
中的 solver.onlyRequires
選項。
solver.onlyRequires = true
另外,請編輯檔案 /etc/zypp/zypper.conf
並變更 installRecommends
選項。
installRecommends=false
這會變更所有套件操作的行為,例如安裝修補程式或新套件。若要變更某次調用的 Zypper 行為,請使用 --no-recommends
參數。
若要啟動 Service Pack 移轉,請執行以下操作:
停用註冊伺服器上所有未使用的延伸,以免將來發生相依性衝突。如果您忘記了某個延伸,YaST 稍後會偵測未使用的延伸儲存庫,並將其停用。
如果您已登入要更新的機器上的某個執行中 GNOME 工作階段,請切換到文字主控台。建議不要從 GNOME 工作階段執行更新。請注意,這並不適用於從遠端機器登入的情況 (除非您正在使用 GNOME 執行 VNC 工作階段)。
執行 YaST 線上更新以取得系統的最新套件更新。
安裝 yast2-migration 套件及其相依項 (在 YaST 的 › 下)。
重新啟動 YaST;如果不重新啟動,新安裝的模組將不會顯示在控制中心中。
在 YaST 中,選擇SUSE Linux Enterprise Server 版本,此模組會列於 或 類別下)。YaST 將顯示可能的移轉目標和摘要。如果您的系統有多個可用的移轉目標,請從清單中選取一個。
(根據所升級的從清單中選取一個移轉目標,然後按一下
繼續操作。如果移轉工具提供更新儲存庫,建議按一下
繼續。如果「線上移轉」工具找到來自 DVD 或本地伺服器的過時儲存庫,強烈建議您將其停用。過時的儲存庫來自先前的 SP。系統會自動移除來自 SUSE Customer Center 或 RMT 的舊儲存庫。
按
,查看摘要並繼續移轉過程。確認 。成功移轉後,請重新啟動系統。
5.5 使用 Zypper 升級 #
若要使用 Zypper 執行 Service Pack 移轉,請使用指令行工具 zypper
migration
(來自套件 zypper-migration-plugin.
執行 Service Pack 移轉時,YaST 會安裝所有推薦的套件。特別是在自訂精簡安裝的情況下,這樣會顯著增加系統的安裝大小。
若要變更此預設行為並只允許必要的套件,請調整 /etc/zypp/zypp.conf
中的 solver.onlyRequires
選項。
solver.onlyRequires = true
另外,請編輯檔案 /etc/zypp/zypper.conf
並變更 installRecommends
選項。
installRecommends=false
這會變更所有套件操作的行為,例如安裝修補程式或新套件。若要變更某次調用的 Zypper 行為,請使用 --no-recommends
參數。
若要啟動 Service Pack 移轉,請執行以下操作:
如果您已登入要更新的機器上的某個執行中 GNOME 工作階段,請切換到文字主控台。建議不要從 GNOME 工作階段執行更新。請注意,這並不適用於從遠端機器登入的情況 (除非您正在使用 GNOME 執行 VNC 工作階段)。
若尚未註冊 SUSE Linux Enterprise 機器,請先進行註冊:
>
sudo
SUSEConnect
--regcode YOUR_REGISTRATION_CODE開始移轉:
>
sudo
zypper migration
有關移除過程的一些說明:
如果您的系統有多個可用的移轉目標,Zypper 允許您從清單中選取一個 SP。這與跳過一個或多個 SP 相同。請記住,基本產品 (SLES、SLED) 的線上移轉僅在主要版本的 SP 之間才仍然可用。
依預設,Zypper 會使用
--no-allow-vendor-change
選項,以傳送到zypper
dup
。如果某套件是從協力廠商儲存庫安裝的,此選項會阻止該套件取代為來自 SUSE 的相同套件。如果 Zypper 找到來自 DVD 或本地伺服器的過時儲存庫,強烈建議您將其停用。系統會自動移除舊的 SUSE Customer Center 或 RMT 儲存庫。
檢閱所有變更,特別是即將移除的套件。輸入
y
(要升級之套件的確切數量因系統而異) 繼續:266 packages to upgrade, 54 to downgrade, 17 new, 8 to reinstall, 5 to remove, 1 to change arch. Overall download size: 285.1 MiB. Already cached: 0 B After the operation, additional 139.8 MiB will be used. Continue? [y/n/? shows all options] (y):
使用 Shift–Page ↑ 或 Shift–Page ↓ 鍵在外圍程序中捲動。
成功移轉後,請重新啟動系統。
5.6 使用 Plain Zypper 升級 #
如果因無法存取網際網路或註冊伺服器而未能註冊您的系統,則無法使用 YaST 移轉或 zypper migration
移轉至新 Service Pack。在這種情況下,您仍可以透過普通 Zypper 和一些手動互動來移轉至新 Service Pack。
只有因無法存取網際網路或註冊伺服器而未能註冊的系統才支援透過此路徑移轉至新 Service Pack。例如,位於受特殊保護網路中的機器。如果已註冊您的系統,請使用 YaST 或 Zypper 移轉。
此移轉路徑要求您要移轉的系統有權存取安裝來源。例如,可以設定 RMT 伺服器或 SLP 伺服器來實現此目的。
此外,系統還必須能夠存取所安裝產品版本的最新更新儲存庫。
如果您已登入要移轉機器上正在執行的圖形工作階段,請登出該工作階段,並切換到文字主控台。建議不要從圖形工作階段內執行更新。請注意,這並不適用於從遠端機器登入的情況 (除非您正在使用 X 執行 VNC 工作階段)。
更新套件管理工具和 SUSE Linux Enterprise 舊儲存庫:
>
sudo
zypper
patch --updatestack-only獲取目前未指定儲存庫的套件 (孤立的套件) 清單。將不會移轉這些套件,且不保證移轉後它們可正常運作 (因為這些套件相依的其他套件可能發生了變更,與這些套件不再相容)。若要獲取該清單,請執行:
>
sudo
zypper packages --orphaned仔細檢查該清單,移除所有不再需要的孤立套件。記下所有剩餘的孤立套件,稍後需要進行比較。
執行以下指令,獲取系統目前已訂閱的所有儲存庫的清單:
>
sudo
zypper repos -u更新每個儲存庫 URL,以使其產品版本號碼變為
15-SP4
。例如,如果某個儲存庫的 URL 為http://rmt.example.com/repo/SUSE/Products/SLE-15-SP2-Product-SLES/x86_64/product/
請將其變為
http://rmt.example.com/repo/SUSE/Products/SLE-15-SP3-Product-SLES/x86_64/product/
需要對已啟用的所有儲存庫執行此操作。同時請考慮對目前已停用的儲存庫執行此操作,以避免未來在啟用這些儲存庫時,系統中包含錯誤的安裝來源。
若要變更儲存庫 URL,請採取以下做法:
使用
› › 。選取一個儲存庫,然後按一下 以進行必要變更。針對所有儲存庫重複此程序。使用 Zypper.執行以下指令以移除舊儲存庫
>
sudo
zypper removerepo OLD_REPO_ID然後執行以下指令以新增相應的新儲存庫
>
sudo
zypper addrepo -f URL NAME-15-SP4編輯
/etc/zypp/repos.d
中的儲存庫組態檔案。每個儲存庫由一個組態檔案表示。必須在每個檔案中變更baseurl
參數的值。
執行
zypper repos -u
來檢查變更,然後執行以下指令來更新儲存庫:>
sudo
zypper refresh -f -s如果更新儲存庫失敗,請再次檢查是否輸入了錯誤的 URL。如果無法修復問題,建議停用失敗的儲存庫。
如果正確設定了所有儲存庫,請再次執行
>
sudo
zypper refresh -f -s,以確定所有儲存庫都是最新的。
在開始移轉之前,建議先執行測試執行:
>
sudo
zypper dup -D --no-allow-vendor-change --no-recommends參數
-D
將進行試執行,即模擬移轉而不實際變更系統。如果出現問題,請先解決問題,然後再繼續。如果測試執行成功,請執行以下指令來執行實際移轉:>
sudo
zypper dup --no-allow-vendor-change --no-recommends-no-allow-vendor-change
確定協力廠商 RPM 不會覆寫基礎系統中的 RPM。--no-recommends
選項可確保在起始安裝期間取消選取的套件不會再次新增。移轉完成且系統已開機進入新的 Service Pack 版本後,請再次執行孤立套件檢查:
>
sudo
zypper packages --orphaned將新清單與開始移轉之前產生的清單進行比較。如果清單中出現新套件,原因可能是這些套件已移到新 Service Pack 中的其他模組。如果之前的安裝中不包含該模組,則不會更新該套件。
您可以在 https://scc.suse.com/packages 上檢查套件所屬的模組。使用
zypper addrepo
或 YaST 軟體儲存庫模組新增缺失的模組,然後執行以下指令來更新孤立的套件:>
sudo
zypper install --no-recommends LIST OF PACKAGES現已成功移轉至新 Service Pack!
5.7 復原 Service Pack #
如果 Service Pack 不適用於您,SUSE Linux Enterprise 支援將系統回復到開始 Service Pack 移轉之前的狀態。前提是對 Btrfs 根分割區啟用了快照 (從 SLES 12 開始,這是預設設定)。如需詳細資料,請參閱第 10 章 「使用 Snapper 進行系統復原和快照管理」。
取得所有 Snapper 快照的清單:
>
sudo
snapper list檢閱輸出以找到在開始 Service Pack 移轉之前剛建立的快照。
欄包含相應的說明, 欄中會將該快照標示為important
。記住 欄中的快照編號,以及 欄中該快照的日期。重新啟動系統。從開機功能表中選取15 SP4 開頭的項目並將其開機。
,然後選擇上一步中記下的日期和編號所對應的快照。此時會載入第二個開機功能表 (快照中的那個)。選取以 SLES系統會開機進入先前的狀態,並且系統磁碟分割區會以唯讀方式掛接。以
root
身分登入,並檢查您是否選擇了正確的快照。此外,請確認一切如常。請注意,由於根檔案系統以唯讀方式掛接,因此功能可能受限。如果出現問題,或者開機的快照不正確,請重新開機並選擇從另一個快照開機 — 到此為止,系統尚未進行任何永久變更。如果快照正確並且依預期運作,請執行以下指令使變更永久生效:
>
sudo
snapper rollback將機器重新開機。在開機螢幕上,選擇預設開機項目以重新開機到已恢復的系統。
檢查是否已正確重設儲存庫組態。此外,檢查是否所有產品均已正確註冊。如果以上任何一項不正確,則稍後可能無法再有效地執行系統更新,或者可能會使用錯誤的套件儲存庫更新系統。
請先確認系統可以存取網際網路,再開始此程序。
執行以下指令以重新整理服務和儲存庫:
>
sudo
zypper ref -fs執行以下指令以獲得使用中儲存庫的清單:
>
sudo
zypper lr仔細檢查此指令的輸出。為該次更新新增的服務和儲存庫不應包含在清單中。例如,如果您是從 SLES 15 SP4 復原到 SLES15 GA,則清單中必須包含
SLES15-GA
儲存庫,而不包含SLES15-SP4
儲存庫。如有錯誤的儲存庫列出,請將其刪除,必要時,請用與您的產品或 Service Pack 版本相符的版本取代它們。如需受支援移轉路徑的儲存庫清單,請參閱第 2.3 節 「模組相依項和生命週期」。(請注意,沒有必要手動介入,因為儲存庫會自動更新,但最好進行驗證並完成所有必要的修正。)
最後,透過執行以下指令檢查所有已安裝產品的註冊狀態:
>
sudo
SUSEConnect --status所有產品都應該報告為
已註冊
。若非如此,請執行以下指令以修復註冊:>
sudo
SUSEConnect --rollback
現在,您已成功將系統回復到就在開始 Service Pack 移轉之前擷取的狀態。
5.8 使用 SUSE Manager 升級 #
SUSE Manager 是一個伺服器解決方案,用於提供適用於 SUSE Linux Enterprise 用戶端的更新、修補程式和安全性修正程式。它隨附一組工具和一個 Web 式使用者介面,用於執行管理任務。如需 SUSE Manager 的詳細資訊,請參閱https://www.suse.com/products/suse-manager/。
SP 移轉允許從某個 Service Pack (SP) 移轉至同一主要版本中的另一個 Service Pack (例如,從 SLES 15 GA 移轉至 SLES 15 SP4)。
如果您的機器由 SUSE Manager 管理,請依據 SUSE Manager 文件所述更新機器。https://documentation.suse.com/suma/ 上的《SUSE Manager Upgrade Guide》(SUSE Manager 升級指南) 中介紹了用戶端移轉程序。
5.9 從 openSUSE Leap 升級至 SUSE Linux Enterprise Server #
您可以將 openSUSE Leap 安裝升級至 SUSE Linux Enterprise Server。升級程序與第 5.4 節 「使用線上移轉工具 (YaST) 升級」類似,但需要執行一些額外的步驟。在生產系統上執行此程序之前,建議您先在複製了生產系統設定的測試系統上執行此程序。
若要瞭解哪些 openSUSE Leap 版本支援移轉,請參閱第 1.2 節 「支援的 SLES 15 SP4 升級路徑」。
openSUSE 提供的套件比 SUSE Linux Enterprise Server 的要多。大多數額外的套件都可透過 SUSE Package Hub 獲得並且將會移轉。任何無法透過 SUSE Package Hub 獲得的額外套件在移轉後都不會再接收更新,因此應在移轉後將其移除。
請確定 SUSE Linux Enterprise Server 和 SUSE Package Hub 儲存庫中提供了運作系統所需的全部套件。如需 SUSE Package Hub 的詳細資訊,請參閱https://packagehub.suse.com/。
若要從 openSUSE Leap 移轉至 SUSE Linux Enterprise Server,請執行以下步驟:
切換到 TTY,例如,按 Ctrl–Alt–F1 鍵切換。然後以
root
身分登入。安裝 yast2-registration 和 rollback-helper 套件。
#
zypper in yast2-registration rollback-helper
啟用
rollback-helper
服務:#
systemctl enable rollback
在 SUSE Customer Center 中註冊系統:
#
yast2 registration
執行移轉:
#
yast2 migration
如果發生套件衝突,YaST 提供了一個可供選擇的解決方案清單。
移除孤立的套件:
#
zypper rm $(zypper --no-refresh packages --orphaned | gawk '{print $5}' | tail -n +5)
將系統重新開機。
#
reboot
現在,您已成功將系統移轉至 SUSE Linux Enterprise Server。
如果您在移轉後遇到問題,可以如同升級 Service Pack 一樣回復移轉。如需指示,請參閱第 5.7 節 「復原 Service Pack」。