Antworten Sie bei Verwendung von apt-get install automatisch mit "Ja"


356

Gibt es eine Möglichkeit, die apt-get installFrage "Möchten Sie fortfahren [J / N]?" Mit "Ja" zu beantworten?

Antworten:



175

Das Problem mit:

apt-get --yes install $something

ist, dass eine manuelle Bestätigung angefordert wird, wenn der öffentliche Schlüssel des Paketunterschriftenbesitzers nicht im Schlüsselbund enthalten ist, oder wenn andere Bedingungen vorliegen. Um sicherzugehen, dass keine Bestätigung angefordert wird, gehen Sie wie folgt vor:

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

Wenn Sie diese Einstellungen dauerhaft beibehalten möchten, erstellen Sie eine Datei in /etc/apt/apt.conf.d/, z. B. /etc/apt/apt.conf.d/90forceyes, mit folgendem Inhalt:

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

3
+1 für Abwechslung. Alle -ywurden langweilig. (Außerdem ist es eine vollständigere Antwort.)
Dennis Williamson

1
Funktioniert dies auch, wenn die Meldung "Um fortzufahren, geben Sie den Ausdruck" Ja, mach was ich sage! "Ein?" Wenn nicht, wie sieht es dann aus? Ich stoße darauf, wenn ich versuche, sysvinit in meinem chrooted-Debian-Image durch systemd zu ersetzen.
Lennart Rolland

13
Bitte niemals verwenden --force-yes: Wie diese Antwort auf einen verwandten Thread aufdebian-devel suggeriert, --force-yeskönnte das System unbrauchbar werden. (Ich stimme nicht ab, weil die Antwort tatsächlich das vom OP festgelegte Problem anspricht, aber ich würde der Antwort trotzdem eine
GROSSE ROTE WARNUNG

7
APT :: Get :: Assume-Yes "true"; hat mir geholfen, Unterbrechungen bei der Installation in einem Docker-Container zu vermeiden.
Mehdi Sadeghi

3
force-yes ist veraltet. tracker.mender.io/browse/CFE-2360
rrawat

53

Beachten Sie, dass Sie Folgendes verwenden können, wenn Sie auch automatisch die Standardantworten verwenden möchten, wenn eine interaktive Eingabeaufforderung angezeigt wird DEBIAN_FRONTEND=noninteractive

Einzelinstallation:

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

Z.B:

sudo DEBIAN_FRONTEND=noninteractive apt-get -y install postfix

Alle Updates:

sudo DEBIAN_FRONTEND=noninteractive apt-get -y update 

Mit und können Sie feinere Optionen einstellen .-o Dpkg::Options::="--force-confdef"-o Dpkg::Options::="--force-confold"

Beispiele:

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

oder

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

Beispiel für eine interaktive Eingabeaufforderung:

Bildbeschreibung hier eingeben

Interessante Lektüre: Führen Sie eine unbeaufsichtigte Installation eines Debian-Pakets durch


1
Gute Antwort. Trotzdem -ywurde ich immer noch gefragt, ob ich die Dienste neu starten möchte. Ich brauchte dies, um alle Eingabeaufforderungen vollständig zu beseitigen.
wisbucky

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

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

Dies sollte zumindest ein- /etc/apt/apt.confund auskommentiert sein. Ich mache mir Sorgen, dass Ubuntu immer um Erlaubnis bittet.

"Bist du dir sicher?", Natürlich bin ich mir sicher, ich bin kein ausgebildeter Affe, der einfach nur über die Tastatur tippt und mit einem Klick glücklich wird.

Als nächstes fragt die Tür: "Bist du sicher, dass du nach draußen gehen willst?"
Der Ofen fragt: "Möchten Sie wirklich kochen?"
Das Auto fragt: "Möchten Sie wirklich bremsen?"
Der Feuerlöscher fragt: "Möchten Sie das Feuer wirklich löschen?"
Es tut mir leid, Dave, das kann ich nicht zulassen.
HAL9000 könnte eine Kontraktion gebrauchen, Data jedoch nicht oder nicht.


3
Der Unterschied zu HAL9000 und dpkg, die um Erlaubnis bitten, besteht darin, dass HAL "Nein, Punkt" gesagt hat, wohingegen die Meldung "Ja, mach, was ich sage" nur angezeigt wird, wenn du dabei bist, dein System vollständig und vollständig zu beschädigen. Wenn du das willst, dann mach weiter. Aber eine Warnung in diesem Fall erscheint vernünftig.
Wouter Verhelst


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

2
+1, aber warum updatebraucht man eine Erlaubnis?
Amyassin

@amyassin Der apt-get updateBefehl erfordert Root-Berechtigungen, da er die lokalen Paketlisten (Indizes) aktualisiert, bei denen es sich um Systemdateien handelt, deren Eigentümer root ist.
jjmontes

3

Im Allgemeinen sollten die Optionen aus dem Handbuch gut funktionieren

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

Wenn dies nicht gelingt, können Sie versuchen, den yesBefehl zu verwenden.

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

habe dies mit meinem vagrant shell provisioning script verwendet

PS: Falls Sie nicht interaktiv sein möchten, aber im Allgemeinen "Nein" angeben, können Sie Folgendes versuchen:

yes no | apt-get install package

1

Der neue ( auch ) aptAlias ​​übernimmt auch den -y( --yes) Schalter:

sudo apt -y upgrade

1

Wenn Sie immer das Argument -y wollen, würde ich empfehlen, die Zeile hinzuzufügen

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

in deine .bashrc. Dies fügt, wie im Kommentar erläutert, automatisch das Argument -y zu all Ihren apt-get-Befehlen hinzu und genehmigt daher alle Downloads.


ANMERKUNG: Dies bleibt so lange wahr, bis Sie die .bashrc-Datei zurücksetzen und die Shell neu starten.


1

Ich suchte nach einer Möglichkeit, einen Nicht-Standard in einem Skript auszuwählen, insbesondere bei der Installation von wireshark, und benutzte schließlich tmux, um mit einer Shell zu interagieren, wie folgt:

# 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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.