Centos

如何從 CentOS 8 切換到 CentOS Stream

  • January 31, 2022

有什麼方法可以就地升級到 CentOS Stream 嗎?我目前正在執行 CentOS 8,出於各種原因想切換到新的 Stream 版本。是否可以不必重新安裝作業系統?

編輯:請查看Anthony Geoghegan 的最新建議答案。

這應該可以工作,因為 CentOS Stream 只是 CentOS 8 之上的附加儲存庫,正如(非官方)centosfaq.org 中提到的那樣

我在我的開發機器上做了這個:

$ dnf history centos-release-stream
ID     | Command line             | Date and time    | Action(s)      | Altered
-------------------------------------------------------------------------------
  156 | update --allowerasing    | 2020-03-27 14:10 | E, I, U        |  127  <
  154 | install -y centos-releas | 2020-03-27 14:04 | Install        |    1 > 

這導致了以下啟用的儲存庫

$ dnf repolist enabled | grep CentOS
AppStream                 CentOS-8 - AppStream
BaseOS                    CentOS-8 - Base
PowerTools                CentOS-8 - PowerTools
Stream-AppStream          CentOS-Stream - AppStream
Stream-BaseOS             CentOS-Stream - Base
Stream-extras             CentOS-Stream - Extras
centosplus                CentOS-8 - Plus
extras                    CentOS-8 - Extras
fasttrack                 CentOS-8 - fasttrack

不過,我需要擺脫一些手動編譯的包(--allowerasing)。我不會在生產伺服器上或沒有正常備份的情況下這樣做。

之後,宣布不再支持 CentOS 8(2021 年 12 月 31 日終止生命週期),升級到 CentOS Stream 成為官方推薦的繼續接收軟體更新 (RPM) 的途徑。

以下是我在按照從 CentOS Linux 轉換為 CentOS Stream的說明時所做的筆記:

1. 安裝 CentOS-Stream 發行文件。

dnf install centos-release-stream

此軟體包安裝以下文件:

/etc/dnf/vars/stream
/etc/yum.repos.d/CentOS-Stream-AppStream.repo
/etc/yum.repos.d/CentOS-Stream-Base.repo
/etc/yum.repos.d/CentOS-Stream-Debuginfo.repo
/etc/yum.repos.d/CentOS-Stream-Extras.repo
/etc/yum.repos.d/CentOS-Stream-Media.repo
/etc/yum.repos.d/CentOS-Stream-PowerTools.repo
/etc/yum.repos.d/CentOS-Stream-Sources.repo
/etc/yum.repos.d/CentOS-Stream-Vault.repo
/etc/yum.repos.d/CentOS-Stream-centosplus.repo

2.用儲存庫替換centos-linux儲存centos-stream庫:

dnf swap centos-{linux,stream}-repos

上面利用 Bash 的大括號擴展來執行這個命令:

dnf swap centos-linux-repos centos-stream-repos

它替換了以下軟體包:

centos-release-stream
centos-release
centos-repos

centos-stream-repos
centos-stream-release

3. 更新所有包以匹配所有啟用的儲存庫中可用的最新版本

sudo dnf distro-sync

對我來說,這安裝了大量的軟體包,刪除了舊的核心軟體包並降級了以下軟體包:

httpd-2.4.37-30.module_el8.3.0+462+ba287492.0.1.x86_64
httpd-filesystem-2.4.37-30.module_el8.3.0+462+ba287492.0.1.noarch
httpd-tools-2.4.37-30.module_el8.3.0+462+ba287492.0.1.x86_64

但是,它在嘗試升級filesystem軟體包時失敗,並且由於以下原因進一步嘗試執行dnf update失敗:

解壓 rpm 包 filesystem-3.8-4.el8.x86_64 時出錯

這是因為我有一個文件系統安裝在/mnt. 解除安裝它允許filesystem升級包並允許操作成功完成:

$ cat /etc/centos-release
CentOS Stream release 8

注意:我只是將我自己的工作站轉換為 CentOS Stream。我還沒有在生產伺服器上複製這個過程。:)

引用自:https://unix.stackexchange.com/questions/552873