2009-12-14 06:49:35 +0000 2009-12-14 06:49:35 +0000
295
295

インストールされていない Debian パッケージのファイルを一覧表示する方法

このコマンドはインストールされているパッケージの内容を一覧表示することができますが、 インストールされていないパッケージの内容を一覧表示して、パッケージをプレビューしたり調べたりするにはどうすればよいでしょうか?

回答 (8)

359
359
359
2009-12-14 15:42:54 +0000

dpkg -c (--contents) は .deb パッケージファイルの内容を一覧表示します (dpkg-deb のフロントエンドです。)

dpkg -c package_file.deb

パッケージファイルではなく、パッケージ名を直接操作するには apt-file を使うとよいでしょう。(

sudo apt-file update        
apt-file list package_name

最初のコメントで述べたように、apt-file は既に設定されている Apt リポジトリ内のパッケージの内容をリストアップします。特定のパッケージがインストールされているかどうかは関係ありません。

58
58
58
2009-12-14 08:14:19 +0000

--contents の代わりに -L を使います:

dpkg --contents PACKAGENAME

このように使うと、dpkgdpkg-deb のフロントエンドとして機能しますので、すべてのオプションを見るには man dpkg-deb を使います。

23
23
23
2009-12-14 14:34:45 +0000

dpkg --contents はアンインストールされたパッケージを見ることができます。.deb がまだシステムにない場合は

apt-get --download-only install pkgname

パッケージは /var/cache/apt/archives にダウンロードされますが、インストールされません。

15
15
15
2013-06-01 13:57:56 +0000

最良の方法は、パッケージリポジトリを直接参照することでしょう:

http://packages.debian.org/[distro name]/all/[package name]/filelist

例:

http://packages.debian.org/wheezy/all/transmission-common/filelist

8
8
8
2015-04-21 21:44:25 +0000

I took @baldoz’s http idea and generalized it for Ubuntu and Debian, added a little sed and wrapped it in a bash function one-liner:

function deb_list () { curl -s $(lsb_release -si | sed -e 's Ubuntu https://packages.ubuntu.com ' -e 's Debian https://packages.debian.org ')/$(lsb_release -sc)/all/$1/filelist | sed -n -e '/<pre>/,/<\/pre>/p' | sed -e 's/<[^>]>//g' -e '/^$/d'; }

使用法:

$ deb_list curl
/usr/bin/curl
/usr/share/doc/curl/changelog.Debian.gz
/usr/share/doc/curl/copyright
/usr/share/doc/curl/NEWS.Debian.gz
/usr/share/man/man1/curl.1.gz

複数行で同じ関数:

function deb_list () {
    curl -s $(lsb_release -si \
                | sed -e 's Ubuntu https://packages.ubuntu.com ' \
                      -e 's Debian https://packages.debian.org '
              )/$(lsb_release -sc)/all/$1/filelist \
      | sed -n -e '/<pre>/,/<\/pre>/p' \
      | sed -e 's/<[^>]>//g' -e '/^$/d';
}

Explained:

  1. lsb_release -si は “Ubuntu” または “Debian” を返し、それをベース URL https://packages.ubuntu.com または https://packages.debian.org に置き換えます。3. URL を curl で取得し、3 つの sed コマンドで html をパイプします。最初にファイルリスト (https://packages.ubuntu.com/trusty/all/curl/filelist<pre> タグの間のもの) のみをキャプチャし、2 番目に html タグを削除し、3 番目に空白行を削除します。
5
5
5
2017-01-06 03:14:29 +0000

2017年1月時点でまだこの問題をググるかもしれないすべての人々のために、Debian 8.5のaptとdpkgの最近のバージョンで何もダウンロードせずにいくつかのクールなものを持つことができます。

ダウンロードせずにdebファイルの内容を表示:

root@debian:apt-get --print-uris download yade
'http://httpredir.debian.org/debian/pool/main/y/yade/yade_2016.06a-7_amd64.deb' yade_2016.06a-7_amd64.deb 1621148 SHA256:26c0d84484a92ae9c2828edaa63243eb764378d79191149970926aa3ec40cdd4

PS: –print-urisスイッチはdebパッケージのURLを印刷しますが、debはダウンロードされていません。

そしてそれをダウンロードしないで deb パッケージの内容を表示して下さい:

root@debian:curl -sL -o- "http://httpredir.debian.org/debian/pool/main/y/yade/yade_2016.06a-7_amd64.deb" |dpkg-deb -c /dev/stdin
drwxr-xr-x root/root 0 2016-12-10 22:18 ./
drwxr-xr-x root/root 0 2016-12-10 22:18 ./usr/
drwxr-xr-x root/root 0 2016-12-10 22:18 ./usr/bin/
-rwxr-xr-x root/root 13184 2016-12-10 22:18 ./usr/bin/yade
.........................more files listed bellow ......................

PS: 同じ結果は

root@debian:dpkg -c <(curl -sL -o- "http://httpredir.debian.org/debian/pool/main/y/yade/yade_2016.06a-7_amd64.deb")

と達成することができます root@debian:curl -sL -o- "http://httpredir.debian.org/debian/pool/main/y/yade/yade_2016.06a-7_amd64.deb" |dpkg-deb --fsys-tarfile /dev/stdin |tar -xO ./usr/share/man/man1/yade.1.gz |man /dev/stdin

**上記の deb パッケージからファイルを、ダウンロードなしで抽出して下さい。

2
2
2
2014-06-27 15:28:37 +0000

試してみてください:

apt-get download packages-name
dpkg --contents *.deb
1
1
1
2015-12-27 13:33:51 +0000
dpkg --contents <(curl -s $(apt-get install --yes --no-download --reinstall --print-uris language-pack-en | tail -n1 | grep -o "http[^']"))
dpkg -c <(curl -sL "http://httpredir.debian.org/debian/pool/main/a/avis/avis_1.2.2-4_all.deb")

.deb をパッケージ名に変更してみてください。


パッケージファイルをダウンロードしなくても内容を確認することもできます。

そこで、language-pack-enファイルのURLがわかれば、以下のシェルコマンドで全てのパッケージファイルを一覧表示します:

apt --print-uris install avis | grep avis

Curlパラメータ: .deb - silent, curl - follow moved links.

URLがわからない場合は: dpkg --contents FILEで取得します。