包命令之间有什么关系?

包命令之间有什么关系?

基于 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 文档了解详情。

相关内容