包命令之間有什麼關係?
基於 RPM 的包管理器支持子命令,例如要求、推薦、衝突、過時、建議和補充。
在閱讀 rpm 手冊頁和依賴項文件時,不清楚它們有何不同。
例如,如果我執行命令
rpm --query --info MozillaFirefox
,將返回以下輸出。Name : MozillaFirefox Version : 60.4.0 Release : lp150.3.30.1 Architecture: x86_64 Install Date: Sun 06 Jan 2019 07:43:50 AM NZDT Group : Productivity/Networking/Web/Browsers Size : 161608776 License : MPL-2.0 Signature : RSA/SHA256, Thu 13 Dec 2018 08:35:09 PM NZDT, Key ID b88b2fd43dbdc284 Source RPM : MozillaFirefox-60.4.0-lp150.3.30.1.src.rpm Build Date : Wed 12 Dec 2018 10:35:10 PM NZDT Build Host : cloud138 Relocations : (not relocatable) Packager : http://bugs.opensuse.org Vendor : openSUSE URL : http://www.mozilla.org/ Summary : Mozilla Firefox Web Browser Description : Mozilla Firefox is a standalone web browser, designed for standards compliance and performance. Its functionality can be enhanced via a plethora of extensions.
如果我執行命令
rpm --query --recommends MozillaFirefox
,將返回以下輸出。libavcodec-full >= 0.10.16 libcanberra0 libpulse0
我假設 libpulse0 指的是 PulseAudio 包。如果是,則命令
rpm --query --info pulseaudio
返回Name : pulseaudio Version : 11.1 Release : lp150.4.1 Architecture: x86_64 Install Date: Sun 06 Jan 2019 06:49:12 AM NZDT Group : System/Sound Daemons Size : 3605819 License : GPL-2.0+ AND LGPL-2.1+ Signature : RSA/SHA256, Mon 23 Apr 2018 10:39:20 AM NZST, Key ID b88b2fd43dbdc284 Source RPM : pulseaudio-11.1-lp150.4.1.src.rpm Build Date : Mon 23 Apr 2018 10:38:51 AM NZST Build Host : build70 Relocations : (not relocatable) Packager : https://bugs.opensuse.org Vendor : openSUSE URL : http://pulseaudio.org Summary : A Networked Sound Server Description : pulseaudio is a networked sound server for Linux, other Unix like operating systems and Microsoft Windows. It is intended to be an improved drop-in replacement for the Enlightened Sound Daemon (ESOUND).
如果
pulseaudio
軟體包已經安裝,為什麼還要推薦安裝libpulse0
?
- 推薦、衝突、過時、建議和補充指的是什麼?
- 推薦、建議和補充之間有什麼區別?
- 什麼時候應該使用它們?
rpm --query --recommends MozillaFirefox
列出
MozillaFirefox
軟體包推薦的軟體包(我將在下面進一步解釋)。與電腦解釋的大多數事物一樣,輸出是按字面意思理解的。因此,libpulse0
建議涉及libpulse0
包裹,而不是pulseaudio
包裹。包列表是靜態的,並按照
MozillaFirefox
包中的定義顯示;它不考慮系統上已經安裝的軟體包。包關係如下:
- requires:如果包 A 需要包 B 才能執行,則包 A 需要包 B;
- 推薦:如果包A可以使用包B,則推薦包B,大多數使用者會同時使用這兩個包(這稱為弱依賴);
- 建議:如果包 A 可以使用包 B,則建議包 B,但大多數使用者不需要它(這被稱為非常弱的依賴關係);
- 補充:包A補充包B,如果它為包B添加功能,大多數使用者會一起使用這兩個包(它與“推薦”幾乎是對稱的);
- 增強:如果包 A 為包 B 添加了功能,那麼包 A 會增強包 B,但大多數使用者不會覺得它特別有用(它與“建議”幾乎是對稱的)。
這應該可以幫助您了解這些術語的含義、它們之間的區別以及何時應該使用它們。
是否實際考慮這些關係取決於所使用的包管理工具。
rpm
它本身處理單個包,因此只有強依賴關係對它很重要(“需要”)。據我所知,yum
也只考慮了強依賴關係。dnf
配置為預設安裝弱依賴;見中的install_weak_deps
標誌dnf.conf
。Zypperurpm
也可以配置為考慮弱依賴。另一個微妙之處是推薦/建議和補充/增強對之間的差異,即為什麼我們需要兩者。它們代表了可以在不同地方獲得的知識。例如,可以選擇使用庫的包“知道”它可以這樣做;適當的關係是“推薦”或“建議”。然而,像 Firefox 這樣的包不可能知道它所有的外掛,所以它不會嘗試在“推薦”或“建議”中列出所有可用的外掛;每個單獨的外掛都可以通過在其 RPM 規範中表明它“補充”或“增強”它來表明它向 Firefox 添加了功能。
有關詳細資訊,請參閱RPM 文件。