回答:
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.org
https://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