Estou fazendo instalações de pacotes autônomas/não interativas via
DEBIAN_FRONTEND=noninteractive apt-get install -y my_package
Isso funciona conforme esperado na maioria dos casos, mas ainda me fornece um prompt interativo se houver conflito no arquivo de configuração, por exemplo, algo assim:
Configuration file '/etc/foo'
==> Modified (by you or by a script) since installation.
==> Package distributor has shipped an updated version.
What would you like to do about it ? Your options are:
Y or I : install the package maintainer's version
N or O : keep your currently-installed version
D : show the differences between the versions
Z : start a shell to examine the situation
Eu sei que posso escolher a resposta passando uma opção adequada dpkg
para apt-get
via-o
, por exemplo
DEBIAN_FRONTEND=noninteractive apt-get -o DPkg::Options::=--force-confdef install -y my_package
No entanto, as opções correspondentes oferecidas por dpkg
parecem não incluir uma forma de abortar a instalação em caso de conflito, que é o que eu precisaria.
Como posso instalar um pacote de forma não interativa apt-get
e falhar se um conflito de configuração for encontrado?
O seguinte também seria aceitável para mim:
- Verifique de forma não interativa antes de ligar
apt-get
se haverá um conflito - Mantenha as versões dos arquivos de configuração no disco (como
--confold
), mas saia com um código de saída diferente de zero ou tenha outra maneira de detectar isso posteriormente.