Como você acessa as informações do arquivo de controle?

2

Existe uma maneira de os scriptlets postinst, pre, etc. acessarem as informações no arquivo de controle Debian durante a instalação?

e.g. 
   Package: name
   Version: 0.1-1
   Depends: ...
    
por user2569618 26.10.2015 / 22:49

2 respostas

1

Aparentemente, os scriptlets postinst, pre, etc. são executados em um ambiente criado pelo dpkg. As informações de controle são variáveis de ambiente que os scriptlets podem acessar.

e.g.

DPKG_MAINTSCRIPT_ARCH=all
DPKG_RUNNING_VERSION=1.16.10
DPKG_MAINTSCRIPT_NAME=postinst
DPKG_MAINTSCRIPT_PACKAGE=zip
DPKG_NO_TSTP=yes
DPKG_ADMINDIR=/var/lib/dpkg
    
por user2569618 28.10.2015 / 18:27
1

Existem algumas maneiras de fazer isso, mas o jeito que eu gosto de fazer é usar dpkg .

Tente isto:

  1. Crie um diretório temporário ex: mkdir /tmp/pkg-tmp
  2. Extrair informações de controle com dpkg: dpkg -e ./path/to/file.deb /tmp/pkg-tmp
  3. Verifique o arquivo de controle, ele deve estar no diretório de nível superior: cat /tmp/pkg-tmp/control
  4. Você pode querer limpar o diretório temporário quando terminar de examinar: rm -rf /tmp/pkg-tmp

Os scripts postinst, preinst e prerm também estarão lá. Se não houver arquivos chamados preinst , postinst , postrm ou prerm , significa que nenhum desses scripts faz parte do pacote Debian.

Alguns pacotes podem ter todos eles, apenas 1 ou 2, ou nenhum - só depende do pacote.

Se o pacote estiver em um repositório APT, você pode executar apt-get download package-name para primeiro baixar o pacote Debian no diretório atual, e então executar os comandos listados acima.

Eu escrevi uma postagem no blog sobre extraindo pacotes Debian e examinando o arquivo de controle, pré-instalação, pós-instalação, arquivos prerm que possuem mais informações.

    
por Joe Damato 28.10.2015 / 01:56