Yum

包命令之間有什麼關係?

  • January 17, 2019

基於 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 文件

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