Como instalar um pacote com o apt sem o prompt "Deseja continuar [S / n]?"?


55

Claro que quando você digita:

sudo apt-get install whatever

Ele pergunta:

Do you want to continue [Y/n]? 

Existe alguma maneira de instalá-lo sem que ele me pergunte se quero continuar? Eu realmente não me importo com espaço, tenho mais do que suficiente.


Respostas:


89
sudo apt-get install -y whatever

Na página do manual ( man apt-get):

 -y, --yes, --assume-yes

           Automatic yes to prompts; assume "yes" as answer to all prompts and
           run non-interactively. If an undesirable situation, such as
           changing a held package, trying to install a unauthenticated
           package or removing an essential package occurs then apt-get will
           abort. Configuration Item: APT::Get::Assume-Yes.

9
(como viver perigosamente arquivo)
user2413

Muito obrigado! Eu realmente deveria usar essa página de manual com mais frequência. :)
Lucas

2
É por isso que eles estão lá @KingShimkus;)
Rinzwind

5
sudo apt-get install -É o que quer ...
BoJack Horseman

Agora, se isso funcionou para a atualização do pacote Docker>. <Se você nunca atualizou o Docker antes, aqui está uma imagem do que aparece no terminal, mesmo quando você usa --yes: Imgur É excepcionalmente irritante, pois força a interação durante a atualização do pacote .
Spencer D

15

Para o apt-get, -you --assume-yesfuncione bem (como @rinzwind explicou) e presumo que seja a melhor resposta aqui. Para muitas dessas operações administrativas interativas, existe um comando semelhante.

Outra maneira bastante genérica de fazer isso é algo como:

 $ echo "y" | sudo apt-get install edamame_biscuit

(Onde edamame-biscuit é o pacote (fabricado) que você deseja instalar e "y" é considerado uma resposta legítima; substitua por "yes" ou outro texto conforme necessário.

Um 'recurso' desse método é que isso será interrompido se você assumir incorretamente apenas um prompt interativo. Se houver algumas solicitações potencialmente indesejadas para as quais você não queira dizer sim, evite a situação de fazer o sistema rolar sem perguntar.


13
Além disso yes | sudo apt-get install edamame-biscuit,. Sim é um comando que gera a palavra "sim" para sua saída. Você também pode imprimir qualquer outro texto conforme necessário, consulte a página de manual.
Kroltan 14/09/14

14
@Kroltan O yescomando (por padrão) apenas gera a letra yseguida por uma nova linha quantas vezes for necessário para preencher o buffer do tubo. Para imprimir realmente a palavra yes, você tem que usar o comando yes yes.
Jonathan Callen

3
yes, perdoe meu erro
Kroltan 14/09/14

4
@Braiam Eu acho que esse era o ponto, por isso não faz nada se alguém apenas cola isso em sua concha.
Kroltan 15/09/14

2
Eu particularmente gosto da parte "Um 'recurso' desse método é que isso será interrompido se você assumir incorretamente apenas um prompt interativo". como enviar spam para tudo pode ser extremamente perigoso.
BeowulfNode42

4

Primeiro de tudo, vamos entender por que a mensagem aparece. De fato, se o pacote não possui dependências que você ainda não instalou ou que você disse explicitamente para instalar, o apt nunca pergunta:

➜  ~  sudo apt-get -qq install xfce4-screenshooter
Selecting previously unselected package xfce4-screenshooter.
(Reading database ... 296146 files and directories currently installed.)
Preparing to unpack .../xfce4-screenshooter_1.8.1-2_amd64.deb ...
Unpacking xfce4-screenshooter (1.8.1-2) ...
Processing triggers for hicolor-icon-theme (0.13-1) ...
Processing triggers for man-db (2.6.7.1-1) ...
Processing triggers for gnome-menus (3.13.3-1) ...
Processing triggers for desktop-file-utils (0.22-1) ...
Processing triggers for mime-support (3.56) ...
Setting up xfce4-screenshooter (1.8.1-2) ...

Embora se você quiser instalar um pacote que dependa de pacotes, você não o mencionou, perguntaria:

➜  ~  sudo apt-get -q install avis
Reading package lists...
Building dependency tree...
Reading state information...
The following extra packages will be installed:
  libjzlib-java libmina-java libslf4j-java
Suggested packages:
  libmina-java-doc libspring-beans-java libcommons-logging-java
  liblog4j1.2-java
The following NEW packages will be installed:
  avis libjzlib-java libmina-java libslf4j-java
0 upgraded, 4 newly installed, 0 to remove and 14 not upgraded.
Need to get 720 kB of archives.
After this operation, 1,258 kB of additional disk space will be used.
Do you want to continue? [Y/n] 

Que, mesmo assim, não perguntaria se você também diz implicitamente que deseja instalar esses pacotes:

➜  ~  apt-get -q install avis libjzlib-java libmina-java libslf4j-java
Reading package lists...
Building dependency tree...
Reading state information...
Suggested packages:
  libmina-java-doc libspring-beans-java libcommons-logging-java
  liblog4j1.2-java
The following NEW packages will be installed:
  avis libjzlib-java libmina-java libslf4j-java
0 upgraded, 4 newly installed, 0 to remove and 14 not upgraded.
Inst libjzlib-java (1.1.3-1 Debian:testing [all])
Inst libslf4j-java (1.7.7-1 Debian:testing [all])
Inst libmina-java (1.1.7.dfsg-11 Debian:testing [all])
Inst avis (1.2.2-2 Debian:testing [all])
Conf libjzlib-java (1.1.3-1 Debian:testing [all])
Conf libslf4j-java (1.7.7-1 Debian:testing [all])
Conf libmina-java (1.1.7.dfsg-11 Debian:testing [all])
Conf avis (1.2.2-2 Debian:testing [all])

Mas, então, como fazer para que ele não pergunte definitivamente? Através do Rizwind, a resposta deve abranger soluções ad-hoc e de script (de fato, essa opção é mais usada em scripts). Você pode modificar o apt.confarquivo e adicionar:

APT::Get::Assume-Yes

Algo assim deve ser suficiente:

echo 'APT::Get::Assume-Yes;' | sudo tee -a /etc/apt/apt.conf.d/00Do-not-ask

Observe que isso não permitirá outros avisos mais flagrantes que você deve verificar , como:

➜  ~  sudo apt-get install sonar
WARNING: The following packages cannot be authenticated!
  sonar
Install these packages without verification? [y/N] 

É por isso que eu não recomendaria o uso de yes | ..., pois esse aviso seria ignorado.


Para "AVISO: Os seguintes pacotes não podem ser autenticados!", O que se deve fazer? Recebo isso para uma imagem do Docker ( python:3.6-slim). Devo fazer uma pergunta separada para isso?
Martin Thoma

@ MartinThoma normalmente, isso é um problema com a lista de pacotes não atualizados. Execute o apt-get update antes de instalar. Se isso não remover a mensagem, faça uma pergunta com o máximo de detalhes possível, até como você criou a imagem da janela de encaixe.
precisa saber é o seguinte

0

Adicione -ya qualquer instalação da biblioteca

Ex . :sudo apt-get install -y nodejs

Ex . :sudo apt-get install -y postgres

Ex . :sudo apt-get install -y mongodb




Existe --force-yes as well, e cuidado com espaços acidentais. depreciado por distros recentes

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.