web-dev-qa-db-ja.com

逆依存:ソースパッケージの逆依存を探します

私の目標は、特定のパッケージとそれに属するソースパッケージのすべての逆依存を見つけることです。たとえば、libsslcommon2に依存するすべてのパッケージと、Sudo apt-get source libsslcommon2を介してインストールできるソースパッケージが必要です。

reverse-dependsのmanページから 私は次のことを行う必要があることを理解しています:

Sudo reverse-depends `libsslcommon2`

これは正常に動作します。しかしながら

Sudo reverse-depends src:libsslcommon2

戻り値

reverse-depends: Error: Unknown package

同じ構文がsrc:bashでも機能します(manページで説明されています)。

注意:bashとlibsslcommon2の両方のソースをインストール/ダウンロードすることでうまく機能します

Sudo apt-get source libsslcommon2
Sudo apt-get source bash

ここの問題は何ですか? libsslcommonソースパッケージに依存するすべてのパッケージをどのように判断できますか?

2
langlauf.io

TL; DR:reverse-depends src:$(what-source libsslcommon2)を使用できます。

libsslcommon2ソースパッケージはありません。代わりに、libsslcommon2qpid-cppソースパッケージ から構築された多数のバイナリパッケージの1つです。一般に、バイナリパッケージは、ビルドに使用されたソースパッケージと同じ名前を持つ場合とそうでない場合があり、ソースパッケージは複数のバイナリパッケージを提供する場合があります。

bash のソースパッケージの名前も bash ですが、ソースパッケージ名をバイナリパッケージ名から推測できるとは限りません。

バイナリパッケージのビルドに使用されているソースパッケージを確認する方法には、次の2つがあります。

  1. https://launchpad.net/ubunt の「パッケージ」でバイナリパッケージ名を検索します。
  2. what-source コマンドを使用します。 (インストールする必要があります what-utilsInstall what-utils 最初に。コマンドラインからこれを行うには、Sudo apt-get install what-utilsを実行します。たとえば、what-source libsslcommon2qpid-cppを出力します。

実際には、同時に探している他の便利な情報が含まれていることが多いため、通常はLaunchpadを使用します。ただし、what-sourceおよびreverse-dependsを使用すると、特定のバイナリパッケージのソースパッケージに関連付けられている逆の依存関係を一覧表示する単一のコマンドを記述できます。

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

これは コマンド置換 -aを使用します。$()式は、括弧内に記述されたコマンドの出力に置き換えられます。

そのコマンドの出力に驚かれるかもしれませんが、少なくとも私の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-sourcerootとして を実行する必要はありません。つまり、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-upstartsourceパッケージがない場合でも同様です。代わりに、 netscript-2.4およびnetscript-2.4-upstartバイナリパッケージ は両方とも netscript-2.4ソースパッケージ からビルドされます。

  • ソースパッケージの逆依存関係は、パッケージの逆ビルド依存関係と同じではありません。パッケージの逆ビルド依存関係は、ビルドするためにパッケージを必要とする他のパッケージですが、ビルド後にインストールする必要はありません。逆ビルドの依存関係を探している場合は、reverse-dependsフラグを指定して-bを呼び出します。

3
Eliah Kagan

reverse-dependsソフトウェアは、特定のバイナリパッケージの生成元であるソースパッケージを自動的に検出しません。 src:ラベルは、ソースパッケージの名前が続くことを示すために使用されます。たまたま、bashのソースパッケージの名前はbashです。ただし、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の出力を確認してください)。

2
muru