web-dev-qa-db-ja.com

パッケージがインストールされている理由を確認できますか?

特定のパッケージについて、それがインストールされている理由を見つけることができますか?

だから、私はそれを見ることができますか、手動でインストールされていますか、別のパッケージの依存関係としてインストールされていますか?または、それはディストリビューションの一部としてインストールされますか?

108
Peter Smit

簡単な解決策は、ターミナルで次のコマンドを入力することです。

aptitude why $package

または、最終的な原因のみに関心がある場合:

aptitude why $package --show-summary

$ packageをパッケージの名前に置き換えます。最初にaptitudeパッケージをインストールする必要がある場合があります。

aptitude why aspell --show-summaryで得られる出力は次のとおりです。

Packages requiring aspell:
  inkscape

詳細については、aptitude why aspellを実行します。以下の出力例を読むことができます。「手動でinkscapeをインストールしました。これにはlibgtkspellが必要です。これにはlibenchantic2aが必要です。これにはaspellが必要です。」 (iマーカーはインストール済みパッケージを示し、Aマーカーは自動的にインストールされたパッケージを示します。)

i   inkscape       Depends libgtkspell0 (>= 2.0.10)                                                                    
i A libgtkspell0   Depends libenchant1c2a (>= 1.6.0)                                                                   
i A libenchant1c2a Depends aspell-en | myspell-dictionary | aspell-dictionary | ispell-dictionary | hunspell-dictionary
i A aspell-en      Depends aspell (>= 0.60.3-2)

最後に、次のコマンド

apt-cache rdepends --installed $package

$ packageに直接依存する、コンピューターにインストールされている他のパッケージを一覧表示します。 --recurseオプションを追加して、それに直接または間接的に依存するすべてのパッケージをリストできます。

104
enzotib

ターミナル(Applications -> Accessories -> Terminal)で次のコマンドを入力すると、特定のパッケージがインストールされた理由をすばやく簡単に判断できます。

aptitude why <package-name>

関心のあるパッケージの名前に置き換えます。たとえば、aptitude why libgoo-canvas-Perlと入力すると、次のように出力されます。

i   shutter Suggests libgoo-canvas-Perl

これは基本的に、パッケージshutterはこの場合libgoo-canvas-Perlのインストールを提案していることを意味します。次にaptitude why shutterと入力することで、依存関係チェーンをたどることができます。

ただし、注意点があります。 aptitudeは、実際にはそうではないかもしれない状況について最ももっともらしい説明を見つけますが、それでもなおさらに調べる手がかりを与えてくれます。

私の場合、shutterlibgoo-canvas-Perlを提案します-ただし、提案されたパッケージはデフォルトでは自動的にインストールされません。それにもかかわらず、shutterを使用してスクリーンショットを編集できず、手動でligbgoo-canvas-Perlをインストールするようになったため、「経験」の記憶が揺らぎます。

最後に、次のコマンドを実行することで、パッケージが自動的にインストールされたかどうかを確認できます(インストールを依頼した他のパッケージの依存関係と推奨事項を調べることで、パッケージ管理システムによって必須と判断されます)。

aptitude show <package-name>

これにより、次のような行が出力されます(出力の3行目)。

Automatically installed: no

詳細については、info aptitude(端末で)を実行するか、 Aptitude wikiページ にアクセスしてください。

特定のパッケージがインストールされたwhenを確認するには、2つのオプションがあります。

  1. Synapticパッケージマネージャーは、すべてのアクティビティの履歴ログを保持します。履歴ログファイルを表示するには、[ファイル]メニューから[履歴]を選択します。 Install(ケースに注意)を検索して、インストールに関するすべてのエントリをリストできます。ただし、これはSynapticを使用してインストールされたパッケージのみを表示します
  2. ターミナルで次のコマンドを実行します。これにより、インストール履歴エントリのdpkgログが検索されます。ただし、保持するログの量には上限があります。したがって、探しているパッケージがかなり前にインストールされていた場合、見つからない可能性があります。詳細 ここ

    zcat -f /var/log/dpkg.log* | grep "\ install\ " | grep -i <package-name>
    
30
koushik

はい、できます。実際、それはかなり明白なコマンドです。 aptitudeがインストールされていると仮定すると、ターミナルウィンドウの広告タイプを開くことができます:

aptitude why package

これにより、その特定のパッケージに依存するパッケージのリストが表示されます。手動でインストールされたパッケージの場合、「パッケージをインストールする理由を見つけることができませんでした」などのメッセージが表示されます。

12

以下に、aptitudeに依存しない簡単な方法を示します。これは、10.10にはデフォルトで出荷されていません。

グラフィカルに

Synapticを開き、削除してみます。

他のパッケージを削除するように求めるダイアログがポップアップした場合、それらは(再帰的に)それに依存しているパッケージです。

ターミナルから

apt-get remove package_name_goes_here -s

繰り返しますが、結果として削除されるパッケージはすべて(再帰的に)それに依存するパッケージです。 (-sパラメーターは、apt-getにパッケージを実際に削除しないように指示します。)

4
badp