在 Fedora 中安裝替代版本的 RPM 包
模塊化 使 Fedora 能夠在倉庫中提供替代版本的 RPM 軟體包。每個 Fedroa 版本可以原生構建不同應用、語言運行時和工具版本的多個版本。
Fedora Magazine 大約一年前就寫了 Fedora 28 伺服器版的模塊化。那時,它只是一個有附加內容的可選倉庫,並且明確只支持伺服器版。到目前為止,它已經發生了很多變化,現在模塊化是 Fedora 發行版的核心部分。一些軟體包已完全變成模塊。在編寫本文時,Fedora 30 的 49,464 個二進位 RPM 軟體包中的 1,119(2.26%)來自模塊(關於這個數字的更多信息)。
模塊化基礎知識
由於許多軟體包有不同的版本會讓人難以承受(並且難以管理),所以包被分組為模塊,它可以代表一個應用程序、一個語言運行時或任何其他合理的組。
模塊通常有多個流,這通常代表軟體的主要版本。它可以並行使用,但在給定系統上只能安裝每個模塊的一個流。
為了不讓用戶因為太多選擇而難以承受,每個 Fedora 版本都有一組默認,因此只需要在需要時做出決定。
最後,為了簡化安裝,可以根據用例使用預定義的 profile 選擇性地安裝模塊。例如,資料庫模塊可以作為客戶端,服務端或同時安裝。
實際使用模塊化
當你在 Fedora 系統上安裝 RPM 軟體包時,它很可能它來自模塊流。你可能沒有注意到的原因之一是模塊化的核心原則之一是在你探究之前保持不可見。
讓我們比較以下兩種情況。首先,安裝流行的 i3 平鋪窗口管理器,然後安裝極簡化的 dwm 窗口管理器:
$ sudo dnf install i3
...
Done!
正如所料,上面的命令會在系統上安裝 i3 包及其依賴項。這裡沒有其他事情發生。但另一個會怎麼樣?
$ sudo dnf install dwm
...
Enabling module streams:
dwm 6.1
...
Done!
感覺是一樣的,但後台發生了一些事情 。它啟用了默認的 dwm 模塊流(6.1),並且安裝了模塊中的 dwm 包。
為了保持透明,輸出中有一條關於模塊自動啟用的消息。但除此之外,用戶不需要了解模塊化的任何信息,以便按照他們一貫的方式使用他們的系統。
但如果他們使用模塊化方式呢?讓我們看看如何安裝不同版本的 dwm。
使用以下命令查看可用的模塊流:
$ sudo dnf module list
...
dwm latest ...
dwm 6.0 ...
dwm 6.1 [d] ...
dwm 6.2 ...
...
Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled
輸出顯示 dwm 模塊有四個流,6.1 是默認值。
要安裝不同版本的 dwm 包,例如,安裝 6.2 的流。啟用它,然後使用以下兩個命令安裝軟體包:
$ sudo dnf module enable dwm:6.2
...
Enabling module streams:
dwm 6.2
...
Done!
$ sudo dnf install dwm
...
Done!
最後,讓我們看下配置,以 PostgreSQL 為例。
$ sudo dnf module list
...
postgresql 9.6 client, server ...
postgresql 10 client, server ...
postgresql 11 client, server ...
...
要安裝 PostgreSQL 11 服務端,使用以下命令:
$ sudo dnf module install postgresql:11/server
請注意,除了啟用流之外,我們可以指定配置從而使用一條命令安裝模塊。
可以立即安裝多個版本。要添加客戶端工具,使用下面的命令:
$ sudo dnf module install postgresql:11/client
還有許多其他帶有多個流的模塊可供選擇。在編寫本文時,Fedora 30 中有 83 個模塊流。包括兩個版本的 MariaDB、三個版本的 Node.js、兩個版本的 Ruby 等等。
有關完整的命令集(包括從一個流切換到另一個流),請參閱模塊化的官方用戶文檔。
via: https://fedoramagazine.org/installing-alternative-rpm-versions-in-fedora/
作者:Adam Šamalík 選題:lujun9972 譯者:geekpi 校對:wxy
本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive