Como posso obter um código de saída 'verbose' apt-get?

8

Como posso obter um código de saída "detalhado" para apt-get , para que erros como esse

Package google-chrome is a virtual package provided by:
  google-chrome-stable 29.0.1547.76-r223446
  google-chrome-beta 30.0.1599.47-1
You should explicitly select one to install.

E: Package 'google-chrome' has no installation candidate

tem um código de saída diferente do que erros de download como este

Err http://dl.google.com/linux/chrome/deb/ stable/main google-chrome-stable amd64 29.0.1547.76-r223446
  Something wicked happened resolving 'dl.google.com:http' (-11 - System error)

Atualmente, ambos os erros saem com 100

Basicamente, gostaria que os erros de download saíssem com um código diferente de erros como o primeiro. Se possível, gostaria que cada erro específico tivesse um código de saída diferente, mas o exemplo acima é o mínimo que preciso. Como posso fazer isso em uma instalação do Ubuntu sem software adicional (com exceção de aptitude )?

    
por kiri 20.09.2013 / 09:42

2 respostas

2

Não é uma resposta completa, mas você pode testar a existência de pacotes primeiro fazendo apt-cache policy X e aplicando a saída para "Candidato (nenhum)" ou "Não foi possível encontrar o pacote X", etc.

    
por Jos 20.09.2013 / 10:53
9

Eu acredito que este não é um caso de XY, e você só quer ser capaz de depurar o apt-get de maneira geral. Sob tais suposições, aqui está minha resposta.

Do man apt.conf :

  

OPÇÕES DE DEPURAÇÃO

     

A ativação de opções na seção Debug :: fará com que as informações de depuração sejam enviadas para o padrão          fluxo de erro do programa utilizando as bibliotecas apt, ou habilitar modos de programa especiais que são          principalmente útil para depurar o comportamento do apt.

Portanto, você só precisa ativar as regras para cada um dos comportamentos de depuração de apt-get :

  • Debug :: pkgProblemResolver : permite a saída das decisões tomadas por dist-upgrade, upgrade,        instalar, remover, limpar.
  • Debug :: NoLocking : desativa todos os bloqueios de arquivos. Isso pode ser usado para executar algumas operações (por exemplo,        apt-get -s install) como um usuário não-root.
  • Debug :: pkgDPkgPM : imprime a linha de comando toda vez que o apt invoca o dpkg (1).

Esses 3 são os primeiros que a página de manual recomenda, e o primeiro ajudará você a depurar o primeiro erro mostrado. Para o segundo você pode precisar:

  • Debug :: Acquire :: http : Imprime informações relacionadas ao download de pacotes usando HTTP. Há também https , ftp , cdrom .

A página man tem muito mais, você pode listá-los facilmente usando man apt.conf | grep -A5 -i debug .

Tudo isso deve ser escrito usando a sintaxe correta e eles aceitam valores booleanos:

Debug::*::*  "true";

ou se você quiser usar várias linhas:

Debug {
  Acquire {
    http "true";
    ftp "true";
  };
  NoLocking "true";
};

Se você quer concorrer apenas a uma instância do apt-get, pode usar a opção -o / --option :

sudo apt-get -o Debug::pkgProblemResolver=true -o Debug::Acquire::http=true -f install 

Outro método é criar seu arquivo de configuração personalizado e carregá-lo com a opção -c / --config-file :

sudo apt-get -c debug-apt.conf install hello

Sobre a alteração dos códigos de saída, acredito que você não pode, a menos que você altere o código-fonte. apt-get é uma parte do software estado da arte , por isso tem métodos avançados para depurar o processo sem a necessidade de depender de códigos de saída.

    
por Braiam 21.09.2013 / 02:20

Tags