依存パッケージ(逆依存関係)をリストする方法は?


201

特定のパッケージのインストールの原因を調査するために、そのパッケージに依存するパッケージのリストを取得したいと思います。で明らかなものを見つけることができませんでしたman dpkg



5
古い質問の回答はすべてaptitude、何年もの間デフォルトでインストールされていないものを中心に展開しています。2017年、Ubuntuの誰もがまだ持っていapt-cacheます。リンクされた質問に従う人はだれもが持っていないプログラムについての議論で迷子になるでしょう。
ランバート

回答:


252

apt-cache rdepends packagename あなたがしたいことをすべき


1
優れた!別のパッケージ(廃止された)によってインストールさapt-cache rdepends tofrodosれた疑いを確認しましたdos2unix
l0b0

2
今日(aptバージョン0.9.9.1)に関しては、rdependsで動作する--recurseオプションがあります。
jarno

43
あなたが追加した場合--installed、出力は多くの人が使用することができ、パッケージのためにも有用です:apt-cache rdepends --installed packagename
quazgar

2
、依存推奨の間、私は区別するために助けたわずかに異なる構文が示唆している、などの構文がありますsudo apt rdepends packagename(aptのキャッシュが、単に傾向を使用していないことに注意してください)
ヴァヒドPazirandeh

4
出力については、なぜいくつかのパッケージの前に垂直バー(パイプ記号)があるのですか?
ヴァヒドパジランデ

62

aptitudeにはこれをうまく処理する方法があります:

$ aptitude why bash
i   foomatic-filters PreDepends bash (>= 2.05)

デフォルトでは、「最もインストールされている、最も強い、最もタイトな、最も短い」理由のみをリストしますが、aptitude -v why検出したすべてを出力するために使用できます。


4
利用可能なすべてではなく、インストールされたパッケージのみを考慮するようです。そして、それが私が必要としていたことでした。
トゥッカマストネン

3
そのためreverse-dependsubuntu-dev-tools
タンブルウィード

debianはどうですか?
トゥッカマストネン

1
ubuntu-dev-toolsDebianにあります
タンブルウィード

これは素晴らしい。ヘッドレスサーバーにopenssh-server 推奨(したがってインストール)xauthし、1か月に何百ものx11依存関係と無数の更新をドラッグすることを学びました。それが自動化されたパッケージ管理の問題です!
BaseZen


16

複数の方法があり、各メソッドは異なる出力を表示します。

完全な逆依存関係ツリーの詳細ビュー。

aptitude install apt-rdepends
apt-rdepends -r bash

または、

apt-cache showpkg bash

または簡潔なリスト:

apt-cache rdepends bash

rdependsそのツリーには正確に何が表示されますか?apt-rdepends php7.0-fpmショーsedsedPHP FPMはもちろん、PHPに依存しません。
ダンダスカレスク

逆に依存します。つまり、PHPはsedに依存します。
エリックバークン-Drevnig

1
こんにちは、「apt-rdepends」は「再帰依存」の略です。逆再帰依存関係が必要な場合は、次のように入力する必要がありますapt-rdepends -r yourPackageNameHere
。– SebMa

apt-cacheのマニュアルページには、「rdependsには、パッケージが持つ各逆依存関係のリストが表示されます」と書かれています。@SebMaが言うように、apt-rdependsでは逆の依存関係を行うには-rオプションが必要です。
NeilG

8

最も簡単なオプションはまだです:

apt rdepends package-name

パッケージをインストールする必要はありません。


1
これは受け入れられた答えに何を追加していますか?
l0b0

2
受け入れられた答えは、これとは何の関係もありません。出力は完全に異なり、apt-cacheの出力よりも人間の消費に便利です。答えは、apt-cacheがデフォルトではどこにもインストールされていないことを述べています-それだけで、この答えに目的がある理由はかなり良いヒントになるはずです。最後に、これは実際に私が探していた答えであるため、ダウン投票はかなりばかげています。
-stefanct

これが受け入れられたバージョンよりも優れている理由の1つは、s出力とは異なり、依存関係のバージョンが含まれていることapt-cacheです。それはまさに私が今必要としていたものです(glibc 2.28の非互換性をデバッグするため、賛成です)
Per Lundberg

aptを使用するための賛成票。元の答えの時点では、この適切な解決策が有効だったのかどうかはわかりませんが、今であればそれは良いことです。
RobotHumans

7

他の良い回答に加えて、APT / APT-GET -sは「シミュレートされた」削除(またはインストール)を行います。

sudo apt -s remove <pkgname>

-sまたは--simulatedを使用してパッケージを削除(またはインストール)すると、通常、影響を受ける依存関係がリストされます。実際にinstallorを実行せずに、削除時に孤立パッケージ、またはインストール時に必要な依存関係が表示されますremove。情報提供のみ。


apt remove -s php7.0-fpmショーThe following additional packages will be installed: apache2 apache2-bin apache2-data libapache2-mod-php7.0 libaprutil1-dbd-sqlite3 libaprutil1-ldap liblua5.1-0。PHP FPMを削除するとApacheがインストールされるのはなぜですか?
ダンダスカレスク

@DanDascalescuうーん。apt pkgのインストール/削除スクリプトが不適切であるか、またはapache2をdepとしてインストールする他の依存関係がある可能性があります(Webサーバーが必要であり、apache2がデフォルトのWebサーバーであると思われます)。いくつかの可能性があります。よくわからない。回答が見つからない場合は、AskUbuntuに良い投稿の匂いがします。
bshea
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.