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.
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
)?
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.
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
:
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:
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.
Tags apt