Abrindo um arquivo de pacote Debian sem 'dpkg' [duplicado]

1

Eu preciso abrir um arquivo de pacote Debian deb no MacOS High Sierra para comparar um binário com um que eu instalei no Linux.

Na verdade, o pacote é mssql-server_14.0.3008.27-1_amd64.deb

O comando file diz Debian binary package (format 2.0) .

tar x e unzip não funcionam.

O que fazer?

    
por Rui F Ribeiro 12.02.2018 / 21:12

1 resposta

5

A camada externa do arquivo .deb real é, na verdade, um arquivo ar .

Como descompactar / abrir ele irá gerar alguns arquivos, é melhor movê-lo para um diretório:

$ mkdir debtmp
$ mv mssql-server_14.0.3008.27-1_amd64.deb 
$ cd debtmp

Então, como primeiro passo, para descompactar, fazemos:

$ ar xv mssql-server_14.0.3008.27-1_amd64.deb 
x - debian-binary
x - control.tar.gz
x - data.tar.xz

Quanto aos arquivos resultantes, debian-binary contém apenas a versão do formato .deb:

$ cat debian-binary 
2.0

control.tar.gz contém as informações do apt / dpkg, incluindo scripts de post / pre / install, dependências e um arquivo de soma de verificação. Então, na verdade, não estamos muito interessados nisso.

$ tar -tvf control.tar.gz 
drwxr-xr-x  0 root   root        0 18 Nov 04:55 ./
-rw-r--r--  0 root   root      546 18 Nov 04:55 ./control
-rw-r--r--  0 root   root       25 18 Nov 04:55 ./shlibs
-rwxr-xr-x  0 root   root      383 18 Nov 04:55 ./preinst
-rwxr-xr-x  0 root   root      107 18 Nov 04:55 ./config
-rwxr-xr-x  0 root   root      289 18 Nov 04:55 ./postrm
-rw-r--r--  0 root   root        0 18 Nov 04:54 ./templates
-rwxr-xr-x  0 root   root      251 18 Nov 04:55 ./prerm
-rw-r--r--  0 root   root       60 18 Nov 04:55 ./triggers
-rwxr-xr-x  0 root   root      771 18 Nov 04:55 ./postinst
-rw-r--r--  0 root   root     6155 18 Nov 04:55 ./md5sums

Estamos, então, muito mais interessados no arquivo data.tar.zx , pois ele contém os arquivos de configuração e os arquivos executáveis.

Primeiro, precisamos instalar o xz , usando MacPorts , pois tar precisará invocá-lo, pois estamos lidando neste arquivo .deb com .tar.xz .

sudo port install xz

Nota: Foi chamado a minha atenção nos comentários que você também pode lidar com .tar.gz e .tar.gz em outros .debs - no entanto, o macOS vem com gunzip e bzip2 instalado por padrão.

Então, para descompactar:

$ tar xvf data.tar.xz 
x ./
x ./opt/
x ./opt/mssql/
x ./opt/mssql/bin/
x ./opt/mssql/bin/sqlservr
x ./opt/mssql/bin/crash-support-functions.sh
[snip]
x ./usr/share/doc/mssql-server/license_Std_Linux.txt.gz
x ./usr/share/doc/mssql-server/license_Eval_Linux_Chinese (Simplified).txt.gz
x ./usr/share/doc/mssql-server/license_Std_Linux_French.txt.gz
x ./lib/
x ./lib/systemd/
x ./lib/systemd/system/
x ./lib/systemd/system/mssql-server.service

Finalmente, tendo todos os arquivos no disco local, o binário pode ser buscado no diretório opt/mssql/bin/

Notas adicionais: De acordo com as excelentes observações do @AustinHemmelgarn, a última etapa também pode encontrar uma compactação gzip ou bzip2 em vez de xz em outros arquivos .deb .

    
por 12.02.2018 / 21:12

Tags