Com base no comentário de Daniel t, consegui fazer isso com DEBIAN_FRONTEND=noninteractive
DEBIAN_FRONTEND=noninteractive /usr/bin/apt-get install -y -q --force-yes linux-image-2.6.32-5-amd64
Eu tenho um script que baixa e substitui os cabeçalhos do kernel no squeeze da Debian.
function fixHeaders(){
#Replace the kernel headers from OVH with standard kernel headers...
aptitude -y install linux-image-2.6.32-5-amd64
sed s/'GRUB_DEFAULT=0'/'GRUB_DEFAULT=1'/g
update-grub
echo "Rebooting the machine. Run this script again after reboot and choose option 2."
sleep 1
reboot
}
O problema que estou tendo é que, depois que o aptitude baixa o pacote, ele lança o script em um gui de texto e faz várias perguntas ao usuário. Existe alguma maneira de pular isso ou enviar tab / enter nos horários apropriados para selecionar "OK" para todas as respostas?
Tenha em atenção que esta resposta que cito não eliminará todos os diálogos, continuará a apresentar o que o APT / DPKG considera crítico . Talvez seja melhor experimentar a segunda opção + usando o frontend readline
para debconf
e preparar um arquivo de resposta.
Citação de uma site-irmã :
Isso deve fazer o que você pediu; perguntando as questões de configuração depois:
$ DEBIAN_PRIORITY=critical
$ export DEBIAN_PRIORITY
$ apt-get upgrade
# Wait a long time. Should be almost entirely noninteractive.
$ dpkg-reconfigure --default-priority=medium --unseen-only
Como alternativa, você pode tentar fazer todas as perguntas de configuração antes:
$ apt-get clean
$ cat >> /etc/apt/apt.conf <<EOF
// Pre-configure all packages before
// they are installed.
DPkg::Pre-Install-Pkgs {
"dpkg-preconfigure --apt --priority=low";
};
EOF
$ apt-get upgrade
Você pode enviar o que quiser com a ferramenta expect
, já que você pode identificar os "tempos apropriados" (porque a entrada não muda).
Tags apt kernel aptitude bash debian-squeeze