Come installare un pacchetto con apt senza il prompt "Vuoi continuare [Y / n]?"?


Risposte:


89
sudo apt-get install -y whatever

Dalla pagina man ( 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
(come vivere file pericoloso)
user2413

Grazie mille! Dovrei davvero usare quella pagina man più spesso. :)
Luca,

2
Ecco perché sono lì @KingShimkus;)
Rinzwind

5
sudo apt-get install -yeah qualunque ...
BoJack Horseman

Ora, se solo questo ha funzionato per l'aggiornamento del pacchetto Docker>. <Se non hai mai aggiornato Docker prima, ecco un'immagine di ciò che appare nel terminale anche quando lo usi --yes: Imgur È eccezionalmente fastidioso poiché forza l'interazione durante l'aggiornamento del pacchetto .
Spencer D,

15

Per apt-get -yo --assume-yesfunziona bene (come spiegato da @rinzwind) e presumo che sia la risposta migliore qui. Per molte di queste operazioni amministrative interattive, esiste un comando simile.

Un altro modo piuttosto generico per farlo è qualcosa di simile:

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

(Dove edamame-biscuit è il pacchetto (inventato) che si desidera installare e si presume che "y" sia una risposta legittima; sostituire con "sì" o altro testo, se necessario.)

Una "caratteristica" di questo metodo è che si interromperà se si assume erroneamente un solo prompt interattivo. Se ci sono alcuni prompt potenzialmente indesiderati a cui potresti non voler dire di sì, eviti la situazione di far scorrere il sistema senza chiedere.


13
Inoltre, yes | sudo apt-get install edamame-biscuit. Sì è un comando che invia la parola "sì" al suo output. Puoi anche fare in modo che venga emesso qualsiasi altro testo secondo necessità, vedi la manpage.
Kroltan,

14
@Kroltan Il yescomando (per impostazione predefinita) emette solo la lettera yseguita da una nuova riga quante volte è necessario per riempire il buffer delle pipe. Per stampare effettivamente la parola yes, devi usare il comando yes yes.
Jonathan Callen,

3
yes, perdona il mio errore
Kroltan,

4
@Braiam Penso che fosse questo il punto, quindi non fa nulla se qualcuno lo incolla semplicemente nel suo guscio.
Kroltan,

2
Mi piace particolarmente la parte "Una 'caratteristica' di questo metodo è che questo si interromperà se si assume erroneamente un solo prompt interattivo". come lo spamming sì a tutto può essere molto pericoloso.
BeowulfNode42,

4

Prima di tutto, cerchiamo di capire perché appare il messaggio. Infatti, se il pacchetto non ha dipendenze che non hai già installato o che hai esplicitamente detto di installare, apt non ti chiede mai:

➜  ~  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) ...

Mentre se vuoi installare un pacchetto che dipende da pacchetti che non hai menzionato, ti chiederemo:

➜  ~  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] 

Ciò nonostante, non ti chiederei se dici anche implicitamente di voler installare quel pacchetto:

➜  ~  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])

Ma, allora, come fare in modo che non ti chieda definitivamente? Tramite Rizwind la risposta dovrebbe riguardare soluzioni ad hoc e di scripting (in effetti, tale opzione è più utilizzata negli script) è possibile invece modificare il apt.conffile e aggiungere:

APT::Get::Assume-Yes

Qualcosa del genere dovrebbe essere sufficiente:

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

Nota, questo non consentirà altre richieste più significative che dovresti verificare , come:

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

Ecco perché non consiglierei l'uso di yes | ..., poiché questo avviso verrebbe ignorato.


Per "ATTENZIONE: i seguenti pacchetti non possono essere autenticati!", Cosa si dovrebbe fare al riguardo? Ottengo questo per un'immagine Docker ( python:3.6-slim). Dovrei fare una domanda separata per questo?
Martin Thoma,

@MartinThoma di solito, questo è un problema con l'elenco dei pacchetti non aggiornato. Eseguire apt-get update prima dell'installazione. Se ciò non rimuove il messaggio, fai una domanda con quanti più dettagli puoi, fino a come hai creato l'immagine docker.
Braiam,

0

Aggiungi -ya qualsiasi installazione di libreria

Ad esempio :sudo apt-get install -y nodejs

Ad esempio :sudo apt-get install -y postgres

Ad esempio :sudo apt-get install -y mongodb




C'è --force-yes as well, e attento agli spazi accidentali. ammortizzato per le distro recenti

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.