dpkg – Debian パッケージをインストールせずにファイルを一覧表示する方法

debian dpkg

このコマンドは、インストールされているパッケージの内容のみを一覧表示することができます

dpkg -L PACKAGENAME

しかし、インストールされていないパッケージの内容を一覧表示して、パッケージをプレビュー/検討するにはどうすればいいのでしょうか?

  313  Xiè Jìléi  2009-12-14


ベストアンサー

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

dpkg -c package_file.deb

パッケージファイルではなくパッケージ名で直接作業するには、apt-fileを使うことができます。(最初にapt-fileパッケージをインストールする必要があるかもしれません)

sudo apt-file update
apt-file list package_name

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

384  alfplayer  2009-12-14


-Lの代わりに--contentsを使用してください

dpkg --contents PACKAGENAME

このように使われる場合、dpkgdpkg-debのフロントエンドとして機能するので、すべてのオプションを見るにはman dpkg-debを使ってください

アーカイブブラウザを使ってパッケージの内容を見ることもできます

59  quack quixote  2009-12-14


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

apt-get --download-only install pkgname

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

25  Rudedog  2009-12-14


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

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

Example:

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

17  baldoz  2013-06-01


私は @baldoz の http のアイデア を取り、Ubuntu と Debian 用に一般化し、sed を少し追加して bash 関数のワンライナーで包みました

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'; }

Usage:

$ 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 に置き換えてください
  2. lsb_Release -sc はコードネーム (例 “trusty”、”sid” など) を返します。https://packages.ubuntu.com/trusty/all/curl/filelist
  3. URL を curl で取得し、3 つの sed コマンドで html をパイプします。最初にファイル リスト (<pre></pre> タグの間のもの) のみをキャプチャし、2 番目に html タグを削除し、3 番目に空白行を削除します

注意: PPA や代替 apt ソースのリポジトリを検索せず、あなたが実行している debian/ubuntu のリリースで利用可能な公式パッケージのみを照会します

10  notpeter  2015-04-21


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

ダウンロードなしのデブファイルの内容を一覧表示しています

まず、debファイルの完全なURLを見つけてください

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 ......................

追記:同じ結果が得られます

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

上記の deb パッケージからダウンロードせずにファイルを抽出します。 例えば、このパッケージをインストールせず、deb パッケージをダウンロードすることなく、yade パッケージの man ページを読みたいとします

dpkg -c でアドバイスされた deb パッケージ内の man ページのファイル名は ./usr/share/man/man1/yade.1.gz です

その場でマンページを読むために

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

manアプリケーションを使用してmanページが正しく表示されるようになりました

PS: 上記のパイプはarコマンドでは動作しません

root@debian:apt --version --> apt 1.4~beta2 (amd64)
root@debian:dpkg --version --> Debian 'dpkg' package management program version 1.18.18 (amd64).
root@debian:man --version --> man 2.7.6.1
root@debian:tar --version --> tar (GNU tar) 1.29

7  George Vasiliou  2017-01-06


Try:

apt-get download packages-name
dpkg --contents *.deb

2  readanon  2014-06-27


最初にインストールしたり、.debファイルからリストを抽出したりする前にはできないようです

以下のコマンドを試してみてください

dpkg --contents <(curl -s $(apt-get install --yes --no-download --reinstall --print-uris language-pack-en | tail -n1 | grep -o "http[^']\+"))

language-pack-enをパッケージ名に変更してください

基本的には.debのファイルをcurl経由で抽出したものを読み込んでdpkg --contents FILEを実行します


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

そのため、.debファイルのURLがわかれば、以下のシェルコマンドですべてのパッケージファイルが一覧表示されます

dpkg -c <(curl -sL "http://httpredir.debian.org/debian/pool/main/a/avis/avis_1.2.2-4_all.deb")

Curlのパラメータ。-s – silent, -L – follow moved links.

URLがわからない場合は、fetch by.apt --print-uris、例えば

apt --print-uris install avis | grep avis

1  kenorb  2015-12-27


タイトルとURLをコピーしました