Como instalar pacotes com o APT sem interação do usuário?


8

Eu tenho um script que baixa e substitui os cabeçalhos do kernel no Debian squeeze.

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, após o aptitude fazer o download do pacote, ele lança o script em uma GUI de texto e faz várias perguntas ao usuário. Existe alguma maneira de pular isso ou enviar guia / entrar nos horários apropriados para selecionar "OK" para todas as respostas?


1
Não tenho certeza se funciona no seu caso, mas a configuração DEBIAN_FRONTEND = noninteractivefunciona para atualizações de versão do debian / ubuntu.
Daniel t.

Respostas:


8

Com base no comentário de Daniel, pude 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 

1
Você também deve investigar a pré - configuração dos pacotes. Isso permite que você responda às perguntas antes mesmo de serem feitas.
precisa

4

Lembre-se de que esta resposta que cito não se livrará de todos os diálogos, mas ainda exibirá o que o APT / DPKG considera crítico . Talvez seja melhor experimentar a segunda opção + usando o readlinefrontend debconfe preparar um arquivo de resposta.

Citando um site irmão :

Isso deve fazer o que você pediu; fazendo as perguntas 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

A atualização do apt-get não funcionará na minha situação. Estou substituindo os cabeçalhos do kernel, não atualizando o kernel para uma nova versão, mas selecionando uma versão diferente.
에이 바

Eu citei a resposta como está. Isso funciona e apt-get installtambém dpkg-configureserá chamado de qualquer maneira.
fuero

Isso ainda solicita que o usuário responda perguntas, que ele não verá como parte do script é executada em uma função - eu poderia alterá-lo, mas a pessoa que executa o script (que não sou eu) não entende. Eu estava realmente procurando uma solução automatizada.
에이 바

0

Você pode enviar o que quiser com a ferramenta expect, desde que você possa identificar os "horários apropriados" (porque a entrada não muda).


A quantidade de vezes para pressionar "OK" varia dependendo da máquina e de suas configurações.
에이 바

Isso por si só provavelmente não seria um problema, desde que seja possível reconhecer corretamente as perguntas (ou o final das perguntas).
Hauke ​​Laging
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.