.deb ファイルにパッケージを一覧表示するには?

.deb ファイルにパッケージを一覧表示するには?
sudo dpkg --install some_stuff_all.deb

ファイルにパッケージをインストールしますsome_stuff_all.deb

sudo dpkg --remove some_stuff_all.deb

表示メッセージ:

dpkg: error: you must specify packages by their own names, not by quoting the names of the files they come in
...
Type dpkg-deb --help for help about manipulating *.deb files;

次に、個々のファイルを一覧表示します。

dpkg-deb  --contents  some_stuff_all.deb

.debファイルにパッケージを一覧表示するには?

答え1

パッケージファイルに関する情報を取得するには:

dpkg -I some_stuff_all.deb

これにより、パッケージ:、バージョン:、依存関係:、説明:など、ファイルに関する利用可能なすべての情報が提供されます。

dpkg --help参照オプションの概要と詳細を参照してくださいman dpkg。これは-I実際にはdpkg-debオプションですが、オプションを与えると自動的に実行されますdpkg。そしてまた参照してください。dpkg-debdpkg-debdpkg-deb --helpman dpkg-deb

答え2

ファイルには1つのパッケージしかありません.deb

パッケージファイル名がある場合は、example_1.234.debパッケージ名もですexample(少なくとも一般的にそうです。誰かが理論的にファイル名を変更できます。)

dpkgを使用してパッケージを削除するには、次のものを使用する必要があります。

dpkg --remove exampleまさかdpkg --remove example_1.234.deb

これは、パッケージファイルではなくインストールされたパッケージを削除しようとするためです。

答え3

パッケージ名が指定されていると仮定すると、次のオプションを使用してfoo.debパッケージの実際の名前(出力にリストされている他のすべてのフィールドと共に)を抽出できます。dpkg-deb -I foo.debdpkg-deb-f

dpkg-deb -f foo.deb Package
  • -f foo.deb PackagePackage:パッケージからフィールドを抽出しますfoo.deb
user@user-X550CL ~/tmp % ls -l
totale 46316
-rw-rw-r-- 1 user user 47425034 ott  5 05:55 foo.deb
user@user-X550CL ~/tmp % dpkg-deb -f foo.deb Package                      
google-chrome-stable

dpkg-deb -f foo.deb Packageこの機能を拡張すると、コマンド内で実行されるコマンド置換を使用して問題のあるパッケージを直接削除できますdpkg -r

sudo dpkg -r $(dpkg-deb -f foo.deb Package)

答え4

Debianベースのシステムを使用せずにこれらのツールにアクセスできない場合でも、ファイルはオープン形式を使用するため、dpkg情報を抽出できます。debこれは本質的にar複数の圧縮tarアーカイブを含むアーカイブで、そのうちの1つにはパッケージに関するすべてのメタデータ(から返されるもの(情報を取得するために独自に呼び出される))を含むcontrol.tarファイルが含まれています。controldpkg -Idpkg-deb -I

圧縮は現在またはをcontrol.tar使用して使用できます。gzipxz

libarchiveはbsdtarこれらすべてのアーカイブ形式(ar、、、、 )をサポートしているためtar.gztar.xz次のことができます。

bsdtar xOf file.deb 'control.tar*' |
  bsdtar xOf - ./control |
  grep -Pom1 '^Package: \K.*'

最初のものは標準出力からファイルをbsdtar抽出し、2番目の抽出器メンバーcontrol.tarに提供します。 (ここではGNUと仮定)パッケージ名を抽出します。bsdtar./controlgrepgrep

関連情報