web-dev-qa-db-ja.com

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

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

dpkg -L PACKAGENAME

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

276
Xiè Jìléi

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リポジトリにあるパッケージの内容をリストします。特定のパッケージがインストールされているかどうかは関係ありません。

329
alfplayer

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

dpkg --contents PACKAGENAME

このように使用すると、dpkgdpkg-debのフロントエンドとして機能するため、すべてのオプションを表示するにはman dpkg-debを使用してください。

アーカイブブラウザを使用してパッケージの内容を表示することもできます。

57
quack quixote

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

apt-get --download-only install pkgname

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

20
Rudedog

最善の方法は、パッケージリポジトリを直接参照することです。

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

例:

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

12
baldoz

私は @ 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';
}

説明:

  1. lsb_release -siは "Ubuntu"または "Debian"を返し、それをベースURLのhttp://packages.ubuntu.comまたはhttps://packages.debian.orgに置き換えます。
  2. lsb_Release -scはコード名(例: "trusty"、 "sid"など)を返して、フルURLを作成します。http://packages.ubuntu.com/trusty/all/curl/filelist
  3. そのURLをcurlで取得し、3つのsedコマンドでhtmlをパイプします。最初はファイルリストのみをキャプチャします(<pre>タグと</pre>タグの間にあるもの)。 2番目のHTMLタグを削除します。 3番目は空白行を削除します。

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

8
notpeter

試してください:

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

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
2
George Vasiliou

最初にインストールするか.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
1
kenorb