Como posso obter informações sobre um arquivo específico do pacote Debian (.deb)? [duplicado]

8

Alguns dias atrás eu baixei um arquivo .deb que não tem um nome descritivo e quero saber qual versão ele é antes de executar dpkg -i .

Eu não sei se o mesmo pacote também vem em um repositório, então eu estou olhando para extrair essas informações do arquivo real, ao invés de consultar o banco de dados do repositório.

    
por Matias Basso 14.02.2018 / 15:50

2 respostas

26

Para obter muitas informações sobre o pacote, use -I ou --info :

dpkg-deb -I package.deb
dpkg-deb --info package.deb

Para obter apenas o uso da versão, -f ou --field :

dpkg-deb -f package.deb Version
dpkg-deb --field package.deb Version
    
por 14.02.2018 / 15:55
3

A resposta aceita é definitivamente a melhor maneira de fazer isso.

Se você não tem um sistema baseado em deb para entregar, então pode ser útil saber que um arquivo deb é na verdade um arquivo ar com 3 arquivos com quase nomes fixos. Há debian-binary, um arquivo tar compactado chamado control, que contém metadados e o pacote principal em um arquivo tar compactado chamado data. O arquivo control.tar.xz pode ser extraído e o arquivo de controle pode ser extraído dele e inspecionado para obter a versão

$ 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
$
    
por 15.02.2018 / 02:43