基于 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
?
- 推荐、冲突、过时、建议和补充指的是什么?
- 推荐、建议和补充有什么区别?
- 什么时候应该使用它们?
答案1
rpm --query --recommends MozillaFirefox
列出了该包推荐的包MozillaFirefox
(我将在下面进一步解释)。与计算机解释的大多数事物一样,输出应按字面意思理解。所以libpulse0
建议涉及的是libpulse0
套餐,而不是pulseaudio
套餐。
包列表是静态的,并按MozillaFirefox
包中的定义显示;它不考虑系统上已安装的软件包。
包关系如下:
- 需要:如果包 A 需要包 B 才能运行,则包 A 需要包 B;
- 推荐:如果包 A 可以使用包 B,并且大多数用户会一起使用这两个包,那么包 A 会推荐包 B(这称为弱依赖);
- 建议:如果包 A 可以使用包 B,则建议包 B,但大多数用户不需要它(这称为非常弱的依赖关系);
- 补充:如果包 A 为包 B 添加了功能,则它是对包 B 的补充,并且大多数用户会一起使用这两个包(这与“推荐”非常对称);
- 增强:如果包 A 向包 B 添加了功能,则包 A 增强了包 B,但大多数用户不会发现它特别有用(它与“建议”几乎对称)。
这应该可以帮助您理解这些术语的含义、它们之间的区别以及何时使用它们。
是否真正考虑这些关系取决于所使用的包管理工具。rpm
它本身处理单个包,因此只有强依赖关系才对它重要(“需要”)。据我所知,yum
也只考虑强依赖性。dnf
默认配置为安装弱依赖项;请参阅install_weak_deps
中的标志dnf.conf
。 Zypper 还urpm
可以配置为考虑弱依赖性。
一个额外的微妙之处是推荐/建议和补充/增强对之间的区别,IE为什么我们两者都需要。它们代表了在不同地方可以获得的知识。例如,可以选择使用库的包“知道”它可以这样做;适当的关系是“推荐”或“建议”。然而,像 Firefox 这样的软件包不可能知道它的所有插件,因此它不会尝试在“推荐”或“建议”中列出所有可用的插件;每个单独的插件都可以通过在其 RPM 规范中“补充”或“增强”它来表明它为 Firefox 添加了功能。
看RPM 文档了解详情。