Existe uma maneira de ver o que exatamente os “acionadores de processamento” fazem por pacote?

14

Como entendi, os " acionadores de processamento para < packagename > " normais fazem algumas tarefas específicas de pacotes e sistemas, como adicionar itens a um menu de ativação ou atualizar um arquivo de configuração . Existe uma maneira real de ver o que exatamente está sendo feito ou alterado durante essa etapa? Onde podemos encontrar o comportamento exato do passo?

    
por zxcdw 22.08.2012 / 01:57

1 resposta

16

Existe, mas é necessário pesquisar alguns scripts bash para os pacotes que estão sendo acionados.

  • Suponha que a saída dpkg seja semelhante a:

    Preparing to replace zim 0.52-1 (using .../archives/zim_0.52-1_all.deb) ...
    Unpacking replacement zim ...
    Processing triggers for shared-mime-info ...
    Processing triggers for menu ...
  • Internamente, o que dpkg faz é chamar o script postinst para cada um desses pacotes com a opção de linha de comando triggered e zero ou mais opções de acionador.

  • Você simplesmente abre /var/lib/dpkg/info/PACKAGE.postinst (é um script bash) e simplesmente procura o que acontece quando $1 é triggered

Exemplo: man-db aciona

Um dos "gatilhos de processamento" mais comuns que você verá é o man-db , sempre que o pacote que estiver sendo instalado tiver uma página man .

Se você abrir /var/lib/dpkg/info/man-db.postinst , encontrará esta seção:

if [ "$1" = triggered ]; then
    # We don't print a status message here, as dpkg already said
    # "Processing triggers for man-db ...".
    run_mandb -pq
    exit 0
fi

Assim, você pode ver que Processing triggers for man-db ... simplesmente resulta na função run_mandb (também encontrada no script postinst ) sendo executada com a opção -pq .

% bl0ck_qu0te%     
por ish 22.08.2012 / 04:22

Tags