Responda automaticamente 'Sim' ao usar o apt-get install


356

Existe uma maneira de apt-get installresponder "sim" a "Deseja continuar [s / N]?"?

Respostas:



175

O problema com:

apt-get --yes install $something

é que ele solicitará uma confirmação manual se a chave pública do proprietário da assinatura do pacote não estiver no chaveiro ou em algumas outras condições. para ter certeza de que não pede confirmação, faça o seguinte:

apt-get --yes --force-yes install $something

Se você quiser ter essas configurações permanentes, crie um arquivo em /etc/apt/apt.conf.d/, como /etc/apt/apt.conf.d/90forceyes com o seguinte conteúdo:

APT::Get::Assume-Yes "true";
APT::Get::force-yes "true";

3
+1 para variedade. Todos -yestavam ficando chatos. (Além disso, é uma resposta mais completa.)
Dennis Williamson

1
Isso funcionará quando diz "Para continuar, digite a frase 'Sim, faça o que eu digo!'" Também? Se não, qual é a solução alternativa? Encontro isso ao tentar substituir o sysvinit pelo systemd na minha imagem debian com chroot.
Lennart Rolland

13
Por favor, nunca use --force-yes: como esta resposta a um tópico relacionadodebian-devel sugere, --force-yespode tornar o sistema inutilizável. (Eu não estou downvoting porque a resposta realmente aborda o problema como afirma o OP, mas eu gostaria de acrescentar um aviso vermelho grande para a resposta de qualquer maneira.)
kostix

7
APT :: Get :: Assume-Yes "true"; me ajudou a evitar interrupções em uma instalação em um contêiner de docker.
Mehdi Sadeghi

3
force-yes foi descontinuado. tracker.mender.io/browse/CFE-2360
rrawat

53

Observe que, se você também desejar obter automaticamente as respostas padrão quando um prompt interativo aparecer, poderá usar DEBIAN_FRONTEND=noninteractive

Instalação única:

sudo DEBIAN_FRONTEND=noninteractive apt-get -y install [packagename]

Por exemplo:

sudo DEBIAN_FRONTEND=noninteractive apt-get -y install postfix

Todas as atualizações:

sudo DEBIAN_FRONTEND=noninteractive apt-get -y update 

Você pode configurar opções mais refinadas com -o Dpkg::Options::="--force-confdef"e -o Dpkg::Options::="--force-confold".

Exemplos:

apt-get update
sudo DEBIAN_FRONTEND=noninteractive apt-get upgrade -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold"

ou

apt-get -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" dist-upgrade

Exemplo de prompt interativo:

insira a descrição da imagem aqui

Leitura interessante: Execute uma instalação autônoma de um pacote Debian


1
Ótima resposta. Mesmo assim -y, ainda recebi avisos perguntando se eu queria reiniciar os serviços. Eu precisava disso para eliminar completamente todos os prompts.
wisbucky 19/06

14
APT::Get::Assume-Yes "true";

APT::Get::force-yes "true";

Isso deve pelo menos /etc/apt/apt.confaparecer e comentar. Eu me preocupo que o Ubuntu esteja assumindo o rumo da Microsoft de sempre pedir permissão.

"Você tem certeza?", É claro que tenho certeza, não sou um macaco treinado simplesmente digitando no teclado, clicando feliz.

Em seguida, a porta perguntará: "Tem certeza de que deseja sair?"
O forno perguntará: "Tem certeza de que deseja cozinhar?"
O automóvel perguntará: "Tem certeza de que deseja aplicar freios?"
O extintor de incêndio perguntará: "Tem certeza de que deseja apagar o fogo?"
Sinto muito, Dave, não posso deixar você fazer isso.
O HAL9000 poderia usar uma contração, mas os Dados não puderam ou não puderam.


3
A diferença com o HAL9000 e o dpkg pedindo permissão é que o HAL disse "não, ponto final", enquanto o "Sim, faça o que eu digo" só aparece se você estiver prestes a quebrar completamente e totalmente o seu sistema. Se é isso que você quer, com certeza, vá em frente. Mas ter um aviso nesse caso parece razoável.
precisa


7
apt-get -y update
apt-get -y install [package]

2
+1, mas por que updateprecisa de permissão?
Amyassin 22/05/12

@amyassin o apt-get updatecomando requer permissões de raiz porque atualiza as listas de pacotes locais (índices), que são arquivos de sistema pertencentes à raiz.
Jjmontes #

3

geralmente as opções do manual devem funcionar bem

apt-get -y --force-yes install package

se não der certo, você pode tentar usar o yescomando

yes | apt-get -y --force-yes install package

usei isso com meu script de provisionamento de shell vagrant

PS: caso você queira não interativo, mas com o geralmente afirmativo não, tente o seguinte:

yes no | apt-get install package

1

O novo ( bem ) aptalias também aceita a opção -y( --yes):

sudo apt -y upgrade

1

Se você sempre quiser o argumento -y, recomendo adicionar a linha

alias apt-get='apt-get -y' #Automatic -y argument on apt-get commands

no seu .bashrc. Isso, como o comentário explica, adicionará automaticamente o argumento -y a todos os seus comandos apt-get e, portanto, aprova todos os downloads.


NOTA: Isso permanecerá verdadeiro até você reverter seu .bashrc e reiniciar o shell.


1

Eu estava procurando uma maneira de selecionar um não padrão em um script, especificamente ao instalar o wireshark, e acabei usando o tmux para interagir com um shell, da seguinte maneira:

# Start a detached root session
sudo tmux new-session -d
# Send the command
sudo tmux send-keys "DEBIAN_FRONTEND=readline apt-get -qq install wireshark-common; exit" enter
# Wait for the tmux session to get to the interactive stage
sleep 5
# Answer the question
sudo tmux send-keys "yes" enter
# Now attach to the session so we wait for command completion
sudo tmux attach
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.