私の目標は、特定のパッケージとそれに属するソースパッケージのすべての逆依存を見つけることです。たとえば、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ソースパッケージに依存するすべてのパッケージをどのように判断できますか?
TL; DR:reverse-depends src:$(what-source libsslcommon2)
を使用できます。
libsslcommon2
ソースパッケージはありません。代わりに、libsslcommon2
は qpid-cpp
ソースパッケージ から構築された多数のバイナリパッケージの1つです。一般に、バイナリパッケージは、ビルドに使用されたソースパッケージと同じ名前を持つ場合とそうでない場合があり、ソースパッケージは複数のバイナリパッケージを提供する場合があります。
bash
のソースパッケージの名前も bash
ですが、ソースパッケージ名をバイナリパッケージ名から推測できるとは限りません。
バイナリパッケージのビルドに使用されているソースパッケージを確認する方法には、次の2つがあります。
what-source
コマンドを使用します。 (インストールする必要があります what-utils 最初に。コマンドラインからこれを行うには、Sudo apt-get install what-utils
を実行します。たとえば、what-source libsslcommon2
はqpid-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-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
sourceパッケージがない場合でも同様です。代わりに、 netscript-2.4
およびnetscript-2.4-upstart
バイナリパッケージ は両方とも netscript-2.4
ソースパッケージ からビルドされます。
ソースパッケージの逆依存関係は、パッケージの逆ビルド依存関係と同じではありません。パッケージの逆ビルド依存関係は、ビルドするためにパッケージを必要とする他のパッケージですが、ビルド後にインストールする必要はありません。逆ビルドの依存関係を探している場合は、reverse-depends
フラグを指定して-b
を呼び出します。
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
の出力を確認してください)。