このコマンドはインストールされているパッケージの内容のみを一覧表示できます。
dpkg -L PACKAGENAME
しかし、インストールされていないパッケージの内容を一覧表示して、パッケージをプレビュー/確認するにはどうすればよいですか?
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リポジトリにあるパッケージの内容をリストします。特定のパッケージがインストールされているかどうかは関係ありません。
--contents
の代わりに-L
を使用してください。
dpkg --contents PACKAGENAME
このように使用すると、dpkg
はdpkg-deb
のフロントエンドとして機能するため、すべてのオプションを表示するにはman dpkg-deb
を使用してください。
アーカイブブラウザを使用してパッケージの内容を表示することもできます。
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
私は @ baldozのhttpのアイデア をとり、それをUbuntuとDebianのために一般化し、少しsed
を追加し、それをbash関数one-linerでラップしました。
function deb_list () { curl -s $(lsb_release -si | sed -e 's Ubuntu http://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 http://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';
}
説明:
http://packages.ubuntu.com
またはhttps://packages.debian.org
に置き換えます。http://packages.ubuntu.com/trusty/all/curl/filelist
<pre>
タグと</pre>
タグの間にあるもの)。 2番目のHTMLタグを削除します。 3番目は空白行を削除します。注意:PPA、代替のaptソースレポジトリは検索せず、あなたが実行しているdebian/ubuntuのリリースに利用可能な公式パッケージのみを問い合わせます。
試してください:
apt-get download packages-name
dpkg --contents *.deb
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 ......................
シモンズ:同じ結果はで達成することができます
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
です。
その場で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アプリケーションを使用して正しく表示されます。
シモンズ:上記のパイプは、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
を変更してください。
それは基本的にcurl
を介して抽出された.deb
ファイルを読み、それに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 params:-s
- サイレント、-L
- 移動したリンクをたどる。
URLがわからない場合は、apt --print-uris
を取得してください。
apt --print-uris install avis | grep avis