数日前、わかりやすい名前のない.debファイルをダウンロードしましたが、dpkg -i
を実行する前にバージョンを知りたいのですが。
同じパッケージがリポジトリに含まれているかどうかわからないため、リポジトリのデータベースにクエリを実行するのではなく、実際のファイルからこの情報を抽出したいと考えています。
パッケージに関する多くの情報を取得するには、-I
または--info
を使用します。
dpkg-deb -I package.deb
dpkg-deb --info package.deb
バージョンの使用のみを取得するには、-f
または--field
:
dpkg-deb -f package.deb Version
dpkg-deb --field package.deb Version
受け入れられた答えは間違いなくそれを行うための最良の方法です。
手元にdebベースのシステムがない場合、debファイルが実際にはar
ベースのアーカイブであり、ほぼ固定された名前の3つのファイルが含まれていることを知っておくと役立ちます。 debian-binary、メタデータを含むcontrolと呼ばれる圧縮tarファイル、およびdataと呼ばれる圧縮tarファイルのメインパッケージがあります。 control.tar.xzファイルを抽出でき、そこから制御ファイルを抽出して検査し、バージョンを取得できます。
$ ar vt zile_2.4.14-6_AMD64.deb
rw-r--r-- 0/0 4 Feb 10 11:00 2018 debian-binary
rw-r--r-- 0/0 1372 Feb 10 11:00 2018 control.tar.xz
rw-r--r-- 0/0 170540 Feb 10 11:00 2018 data.tar.xz
$ mkdir /tmp/e ; cd /tmp/e ; ar x ~-/zile_2.4.14-6_AMD64.deb
$ xzcat control.tar.xz | tar vtf -
drwxr-xr-x root/root 0 2018-02-10 11:00 ./
-rw-r--r-- root/root 557 2018-02-10 11:00 ./control
-rw-r--r-- root/root 874 2018-02-10 11:00 ./md5sums
-rwxr-xr-x root/root 468 2018-02-10 11:00 ./postinst
-rwxr-xr-x root/root 167 2018-02-10 11:00 ./postrm
-rwxr-xr-x root/root 219 2018-02-10 11:00 ./prerm
$ xzcat control.tar.xz | tar xf -
$ grep Version control
Version: 2.4.14-6
$