it-swarm.com.de

Machen Sie apt-get Update und Upgrade automatisiert und unbeaufsichtigt

Ich habe ungefähr 7 Debian-Server, die ich verwalte, und ich möchte sie so einstellen, dass sie sich automatisch aktualisieren. Also habe ich ein Skript als solches erstellt:

#!/bin/sh
apt-get update
apt-get upgrade

und platzierte es auf der Crontab-Liste von root. Leider hängt es immer im Abschnitt Upgrade und fragt, ob ich sicher bin, dass ich ein Upgrade durchführen möchte. Da es sich um einen Cron-Job handelt, wird die Ausgabe erst angezeigt, wenn mir per E-Mail mitgeteilt wird, dass sie fehlgeschlagen ist. Gibt es eine Möglichkeit, diese Eingabeaufforderung zu überspringen und das Upgrade einfach automatisch durchzuführen?

31
Canadian Luke

Verwenden Sie die Option -y, um zu veranlassen, dass Sie nicht danach fragen. Von 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.

Sie können auch die Umgebungsvariable DEBIAN_FRONTEND festlegen

DEBIAN_FRONTEND=noninteractive apt-get -y upgrade
48
Arthur Ulfeldt

Vielleicht verwenden Sie das falsche Werkzeug. unattended-upgrades package installiert täglich Sicherheitsupgrades (kann konfiguriert werden), Sie können konfigurieren, welche Pakete aktualisiert oder nicht aktualisiert werden sollen usw. Kann installiert werden mit:

Sudo apt-get install unattended-upgrades

Von man unattended-upgrades:

Die Konfiguration erfolgt über den apt-Konfigurationsmechanismus. Die Standardkonfigurationsdatei finden Sie unter /etc/apt/apt.conf.d/50unattended-upgrades

28
Braiam

obwohl die vorherigen Antworten informativ sind, umgehen sie nicht das 'Problem' der Eingabe, die mit menschlichen Mitteln während upgrade erforderlich ist. Daher verwende ich Folgendes:

export DEBIAN_FRONTEND=noninteractive
export DEBIAN_PRIORITY=critical
Sudo -E apt-get -qy update
Sudo -E apt-get -qy -o "Dpkg::Options::=--force-confdef" -o "Dpkg::Options::=--force-confold" upgrade
Sudo -E apt-get -qy autoclean

verwenden Sie den Befehl dist-upgrade, um 'Distribution'-Upgrades wie Kernel einzuschließen.

ausführliche Informationen zu diesen Parametern finden Sie im manpgage of dpkg .

importat note : Der Aufruf von Sudo einschließlich des Parameters -E ist erforderlich:

Indicates to the security policy that the user wishes to preserve their existing environment variables. The security policy may return an error if the user does not have permission to preserve the environment.

andernfalls wirken sich die Anweisungen EXPORT nicht auf die Aufrufe von apt-get aus!

gutschrift geht an Remy van Elst ! Vielen Dank!

10
jitter

Ein generisches Werkzeug für diese Art von Dingen ist yes:

DESCRIPTION
       Repeatedly output a line with all specified STRING(s), or 'y'.

So könnten Sie zum Beispiel tun

yes | Sudo apt-get upgrade 

Bitte beachten Sie, dass im speziellen Fall von apt-get upgrade mit den von @ Braiam oder @ ArthurUlfeldt vorgeschlagenen Optionen ist besser.

3
terdon