debパッケージの依存関係リストを確認する方法


94

debパッケージの依存関係リストを確認するにはどうすればよいですか。私はUbuntu 11.10を実行していますが、すべてのdebパッケージをからバックアップしましたvar/cache/apt/archives。PCをフォーマットし、選択したアプリケーションのみを再インストールします。また、インストールされているパッケージと依存関係のリストを取得する方法もあります。


2番目の質問については、askubuntu.com
questions /

インストールされたパッケージの完全なリストについては使用dpkg --get-selections | sed -n 's/[[:space:]]install$//p'
ティノ

回答:


73

dpkgメソッドに加えて、リポジトリ内のパッケージの依存関係を確認できます。

apt-cache depends package-name

編集 @Tinoの推奨で更新されました。@Tigranのコメントは適用されなくなりました。


3
注:これは、パッケージが既にインストールされている場合にのみ機能します。
ティグランサルエフ16

@TigranSaluevはdpkg -I package、インストールされたパッケージに対してのみ機能することに注意してください。 apt-cacheあなたがした後に知られているすべてのパッケージに働きますapt-get update
ティノ

1
apt-cache depends packageその場合、showpkg依存関係が推奨、競合などであるかどうかはわかりませんので、より良い方法ですので、少し困惑しています。ないスクリプトのためdependsと組み合わせshowpkg参照くださいunix.stackexchange.com/a/362866/23450
ティノ

100

これにより、パッケージに関するすべての情報が表示されます。

dpkg -I package.deb

Ubuntu 14.04では動作しなくなりました:dpkg -I splunkforwarder-6.3.3-f44afce176d0-linux-2.6-amd64.deb new debian package, version 2.0. size 15881308 bytes: control archive=3104 bytes. 153 bytes, 5 lines control 6058 bytes, 207 lines * postinst #!/bin/bash 2912 bytes, 93 lines * preinst #!/bin/bash Package: splunkforwarder Version: 6.3.3 Maintainer: Splunk Inc. <info@splunk.com> Architecture: amd64 Description: Splunk The platform for machine data.
Craig S. Anderson

@ CraigS.Andersonここで14.04を実行すると、私の場合は完璧に機能します。私見の受け入れられた答えである必要があります。
magic_al

/var/cache/apt/archives/パッケージ名の前に置き、タブ補完を使用してバージョンなどの完全なパッケージ名を見つけることを忘れないでくださいdpkg -I /var/cache/apt/archives/elasticsearch_2.4.4_all.deb
ジェイソンR.クームス

1
依存関係情報が表示されません
ニック

パッケージを(再)インストールせずに取得できることを追加できます(おそらく一般的な使用例です)sudo apt-get install --reinstall --download-only [package name]
カールリヒター

2

apt-cache depends [Package-Name]同様に動作します。.debソースリストの外部からパッケージを入手した場合、 apt-cache showpkg [Package-Name] && apt-cache depends [Package-Name]古い情報が表示されたり、実際にインストールされたパッケージと同期されなかったりする可能性があるため dpkg -I [Package-Name]、その場合に最適です。


2

14.04以降の場合:

dpkg-Iもう持っていないので、dpkg-deb依存関係を含むパッケージ情報を表示するために使用する必要があります。

dpkg-deb -I package.deb

1
こんにちはFabby、dpkgには現在-Iオプションがありません。Ubuntu 12.04および16.04でテスト済み。代わりにdpkg-debを使用する必要があります。
ラップナラヤン

コメントは撤回されました。回答が明確になり、支持されました
Fabby

0

ここにいくつかのずさんなものがあり、おそらくdpkg -I依存項目をリストとして取得するために出力に対して行うことができる後処理をあまり網羅していないでしょう:

コンピューター用に凝縮

# dpkg -I package.deb | python -c "import sys, re; t=re.split(r'\n(?= ?[\w]+:)|:', sys.stdin.read()); print '\n'.join([i.strip() for i in {key.strip(): value.strip() for key, value in zip(t[::2], t[1::2])}['Depends'].split(',')])"
#

人間向けに拡張:

dpkg -I package.deb | python -c "
    import sys, re;
    # Split keys and values into pairs (zipped together later)
    t=re.split(
        r'\n(?= ?[\w]+:)|:', 
        sys.stdin.read()
    ); 
    # Newline separate each dependency
    print '\n'.join([
        # Trim each dependency value
        i.strip() for i in {
            # Build assoc array from package metadata
            key.strip(): value.strip() 
            for key, value in zip(t[::2], t[1::2])
        }['Depends'].split(',')
    ])
"

これにより、 'foo.deb'に依存し、まだインストールされていないパッケージがエコーされます。dpkg -I foo.deb | for i in $(awk -F '、' '/ Depends:/ {gsub(/:/、 "、"); for(i = 2; i <= NF; i ++){gsub(/。* $ /、 ""、$(i)); printf( "%s \ n"、$(i));}} '); do dpkg -s $ i&> / dev / null || echo $ i; 完了| tr '\ n' ''
グレゴリーバード

@GregoryBurd、自由に私の回答/ psotを編集してください。この理由でコミュニティwikiとして投稿しました^ u ^
ThorSummoner

elasticsearchでこのコマンドを実行すると、が出力されlibc6\nadduser\n Installed-Size\nます。つまり、Depends行だけでなく、それ以上の一致があるようです。
ジェイソンR.クームス

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.