reverse-depends:查找源包的反向依赖关系

reverse-depends:查找源包的反向依赖关系

我的目标是找到某个软件包及其所属源包的所有反向依赖项。例如,我想要所有依赖于的软件包libsslcommon2以及可以通过 进行安装的源包sudo apt-get source libsslcommon2

来自reverse-depends 手册页我理解我需要:

sudo reverse-depends `libsslcommon2`

效果很好。但是

sudo reverse-depends src:libsslcommon2

返回

reverse-depends: Error: Unknown package

但是相同的语法也适用src:bash(如手册页中提到的)。

注意:通过以下方式安装/下载 bash 和 libsslcommon2 的源代码效果很好

sudo apt-get source libsslcommon2
sudo apt-get source bash

这里有什么问题?如何确定所有依赖于 libsslcommon 源包的包?

答案1

总结:您可以使用reverse-depends src:$(what-source libsslcommon2)

没有libsslcommon2源包。相反,libsslcommon2它是从以下二进制包构建的:源码qpid-cpp一般而言,二进制包可能与构建它所用的源包同名,也可能不同名,并且源包可能会提供多个二进制包。

源包的名称bash也是bash,但源包名称并不总是能从二进制包名称中猜出。

检查用于构建二进制包的源包的两种方法是:

  1. 在“Packages”下搜索二进制包名称https://launchpad.net/ubuntu
  2. 使用what-source命令。(您必须安装什么实用程序 安装 what-utils首先。要从命令行执行此操作,请运行sudo apt-get install what-utils。)例如,what-source libsslcommon2输出qpid-cpp

实际上,我通常使用 Launchpad,因为它通常同时包含我正在寻找的其他方便信息。但是使用 和what-sourcereverse-depends您可以编写单个命令来列出与特定二进制包的源包关联的反向依赖项:

reverse-depends src:$(what-source libsslcommon2)

这使用命令替换--$( )表达式被括号内所写的命令的输出所替换。

您可能会对该命令的输出感到惊讶,至少从我的 15.04 系统运行时,该命令的输出是:

No reverse dependencies found

但其实这并不奇怪。这意味着除了从qpid-cpp源包构建的二进制包之外,没有任何二进制包依赖于从qpid-cpp源包构建的任何二进制包。例如:

ek@Io:~$ reverse-depends libsslcommon2
Reverse-Depends
===============
* libsslcommon2-dev
* qpid-client
* qpidd

Packages without architectures listed are reverse-dependencies in: amd64, arm64, armhf, i386, powerpc, ppc64el
ek@Io:~$ what-source libsslcommon2-dev
qpid-cpp
ek@Io:~$ what-source qpid-client
qpid-cpp
ek@Io:~$ what-source qpidd
qpid-cpp

最后,请注意:

  • 你做不是需要运行reverse-depends(也不需要what-source以 root 身份。也就是说,sudo reverse-depends ...没有必要;reverse-depends ...而是运行。

  • reverse-depends实用程序而言,源包的反向依赖关系是从源包构建的二进制包的反向依赖关系。它们所依赖的特定二进制包在 的输出中列在包名称右侧的括号中reverse-depends src:...

    源包的反向依赖关系,如所列出的reverse-depends仍然是二进制包,而不是源代码包。例如,输出reverse-depends src:bash包括:

    * netscript-2.4                 (for bash)
    * netscript-2.4-upstart         (for bash)
    

    即使没有netscript-2.4-upstart 来源包。相反,netscript-2.4netscript-2.4-upstart二进制包都是从netscript-2.4源码包

  • 源包的反向依赖项与包的反向构建依赖项不同。包的反向构建依赖项是需要该包才能构建的其他包,但在构建后不一定需要安装。如果您正在寻找反向构建依赖项,请使用reverse-depends标志调用-b

答案2

软件reverse-depends不会自动检测生成给定二进制包的源包。src:标签用于指示后面跟着的是源包的名称。碰巧的是,的源包名称bashbash。但对于libsslcommon2,源包名为qpid-cpp

$ reverse-depends -r utopic src:qpid-cpp
Reverse-Depends
===============
* qpidd-msgstore                (for qpidd)
* qpidd-msgstore                (for libqpidbroker2)
* qpidd-msgstore                (for libqpidcommon2)

Packages without architectures listed are reverse-dependencies in: amd64, armhf, i386, ppc64el

apt-get另一方面,知道源包(检查的输出apt-cache show libsslcommon2)。

相关内容