O arquivo /etc/default/grub
é gerado no momento da instalação do pacote, o que é necessário porque ele se integra ao debconf. Isso significa que ele não pode ser tratado como um arquivo conf do dpkg e, portanto, a manipulação do arquivo de configuração do dpkg não o conhece.
Em vez disso, ele usa ucf
, uma ferramenta Debian mais sofisticada para manipular a configuração. Isso, infelizmente, não entende as opções do dpkg, então definir Dpkg::Options::="--force-confdef"
não ajudará. Ele tem sua própria maneira de fazer upgrades sem prompt, através das variáveis de ambiente UCF_FORCE_CONFFNEW
e UCF_FORCE_CONFFOLD
.
ucf
usa debconf
para solicitar, então configurar a interface debconf para noninteractive
também irá silenciar a mensagem. Se você realmente quer atualizações não-interativas, você precisará fazer isso de qualquer maneira - pacotes arbitrários podem fazer perguntas debconf (embora geralmente não sejam feitas durante as atualizações).
Você pode definir a interface debconf como única, adicionando DEBIAN_FRONTEND=noninteractive
ao seu ambiente, ou pode defini-la permanentemente executando dpkg-reconfigure debconf
e selecionando o front-end não interativo. Se você estiver usando o front-end não interativo, receberá a resposta padrão para qualquer pergunta que um pacote possa fazer.
Para ucf
, a resposta padrão é "manter o arquivo existente".
Assim, o comando completo para fazer uma atualização 100% garantida¹ sem prompts seria.
sudo DEBIAN_FRONTEND=noninteractive apt-get -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" dist-upgrade
It's: tecnicamente é possível que os pacotes usem outro método de solicitação do que o debconf, mas isso é contra a política do Debian. Se você encontrar um pacote desse tipo, envie um bug.