在Fedora中安裝替代版本的RPM包
使 Fedora 能夠在倉庫中提供替代版本的 RPM 軟件包。每個 Fedroa 版本可以原生構(gòu)建不同應(yīng)用、語言運行時和工具版本的多個版本。
Fedora Magazine 大約一年前就寫了 Fedora 28 服務(wù)器版的模塊化。那時,它只是一個有附加內(nèi)容的可選倉庫,并且明確只支持服務(wù)器版。到目前為止,它已經(jīng)發(fā)生了很多變化,現(xiàn)在模塊化是 Fedora 發(fā)行版的核心部分。一些軟件包已完全變成模塊。在編寫本文時,F(xiàn)edora 30 的 49,464 個二進制 RPM 軟件包中的 1,119(2.26%)來自模塊(關(guān)于這個數(shù)字的更多信息)。
模塊化基礎(chǔ)知識
由于許多軟件包有不同的版本會讓人難以承受(并且難以管理),所以包被分組為模塊,它可以代表一個應(yīng)用程序、一個語言運行時或任何其他合理的組。
模塊通常有多個流,這通常代表軟件的主要版本。它可以并行使用,但在給定系統(tǒng)上只能安裝每個模塊的一個流。
為了不讓用戶因為太多選擇而難以承受,每個 Fedora 版本都有一組默認,因此只需要在需要時做出決定。
***,為了簡化安裝,可以根據(jù)用例使用預(yù)定義的 profile 選擇性地安裝模塊。例如,數(shù)據(jù)庫模塊可以作為客戶端,服務(wù)端或同時安裝。
實際使用模塊化
當你在 Fedora 系統(tǒng)上安裝 RPM 軟件包時,它很可能它來自模塊流。你可能沒有注意到的原因之一是模塊化的核心原則之一是在你探究之前保持不可見。
讓我們比較以下兩種情況。首先,安裝流行的 i3 平鋪窗口管理器,然后安裝極簡化的 dwm 窗口管理器:
$ sudo dnf install i3
...
Done!
正如所料,上面的命令會在系統(tǒng)上安裝 i3 包及其依賴項。這里沒有其他事情發(fā)生。但另一個會怎么樣?
$ sudo dnf install dwm
...
Enabling module streams:
dwm 6.1
...
Done!
感覺是一樣的,但后臺發(fā)生了一些事情 。它啟用了默認的 dwm 模塊流(6.1),并且安裝了模塊中的 dwm 包。
為了保持透明,輸出中有一條關(guān)于模塊自動啟用的消息。但除此之外,用戶不需要了解模塊化的任何信息,以便按照他們一貫的方式使用他們的系統(tǒng)。
但如果他們使用模塊化方式呢?讓我們看看如何安裝不同版本的 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 服務(wù)端,使用以下命令:
$ sudo dnf module install postgresql:11/server
請注意,除了啟用流之外,我們可以指定配置從而使用一條命令安裝模塊。
可以立即安裝多個版本。要添加客戶端工具,使用下面的命令:
$ sudo dnf module install postgresql:11/client
還有許多其他帶有多個流的模塊可供選擇。在編寫本文時,F(xiàn)edora 30 中有 83 個模塊流。包括兩個版本的 MariaDB、三個版本的 Node.js、兩個版本的 Ruby 等等。
有關(guān)完整的命令集(包括從一個流切換到另一個流),請參閱模塊化的官方用戶文檔。