回答:
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リポジトリ内のパッケージの内容をリストします。特定のパッケージがインストールされているかどうかは関係ありません。
sudo apt-file update)、設定済みのAptリポジトリ内のパッケージのコンテンツのみを一覧表示します。
dpkg -cいいね!
.deb個別にダウンロードしたファイルではなく、構成済みのリポジトリからのものであると想定しています。しかし、元の質問はあいまいです。
の--contents代わりに使用-L:
dpkg --contents PACKAGENAME
この方法で使用dpkgすると、のフロントエンドとして機能するため、すべてのオプションを表示するdpkg-debために使用man dpkg-debします。
アーカイブブラウザを使用して、パッケージの内容を表示することもできます。
dpkg --contents google-chrome-stable_current_amd64.debインストールするすべてのファイル(ほとんどが/opt/google/chrome)をリストしました。これを入力しても、現在システムにインストールされているファイルはありません。(問題があればXubuntu 11.10を実行しています。)
dpkg --contentsアンインストールされたパッケージを見ることができます。.debがシステム上にまだない場合は、
apt-get --download-only install pkgname
パッケージはダウンロード/var/cache/apt/archivesされますが、インストールされません。
最良の方法は、パッケージリポジトリを直接参照することです。
http://packages.debian.org/[distro name]/all/[package name]/filelist
例:
http://packages.debian.org/wheezy/all/transmission-common/filelist
lynx -dump -nolist http://packages.debian.org/wheezy/all/transmission-common/filelist | grep ^/(lynxインストール済みの場合)を使用できます。
@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'; }
使用法:
$ 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';
}
説明:
https://packages.ubuntu.comか、https://packages.debian.orghttps://packages.ubuntu.com/trusty/all/curl/filelist<pre>と</pre>タグの間)のみをキャプチャします。2番目はHTMLタグを取り除きます。3番目は空白行を削除します。注:PPA、代替aptソースリポジトリは検索せず、実行中のdebian / ubuntuのリリースで利用可能な公式パッケージのみをクエリします。
2017年1月にまだこの問題をグーグルで調べているすべての人々のために、Debian 8.5の最新バージョンのaptとdpkgをダウンロードすることなく、クールなものを入手できます。
ダウンロードせずにDebファイルの内容を一覧表示:
最初に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 ......................
PS:同じ結果を達成することができます
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パッケージのマニュアルページを読みたいとします。
助言としてdebパッケージ内のmanページのファイル名がdpkg -cあります./usr/share/man/man1/yade.1.gz
その場でmanページを読むには:
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
最初にインストールするか、.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-サイレント、-L-移動したリンクをたどります。
URLがわからない場合は、次の方法で取得しますapt --print-uris。
apt --print-uris install avis | grep avis