ubuntuusers.de

Hinweis: Dies ist ein statischer Snapshot unseres Wikis vom 25. März 2013 und kann daher nicht bearbeitet werden. Der aktuelle Artikel ist unter wiki.ubuntuusers.de zu finden.

cron-apt

Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:

Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:

Das Programm cron-apt {en} hat den Zweck (Sicherheits-)updates automatisch herunterzuladen und auf Wunsch zu installieren. Eine ähnliche Funktionalität bietet auch Synaptic, jedoch wird cron-apt durch Einträge in der crontab gestartet und benötigt keinen angemeldeten Benutzer und/oder eine Passworteingabe vor dem Durchführen der Aktionen. Dies kann vor allem bei Systemen hilfreich sein, die nur sporadisch von einem menschlichen Administrator gewartet werden können. Ebenso ist eine Einrichtung für das automatische Installieren von Sicherheitsupdates auf Servern zu empfehlen.

Jegliches Vorgehen benötigt Root-Rechte[5].

Installation

Folgendes Paket muss installiert [1] werden:

  • cron-apt (universe, [2])

Wiki/Vorlagen/Installbutton/button.png mit apturl

Paketliste zum Kopieren:

sudo apt-get install cron-apt 

sudo aptitude install cron-apt 

Einrichtung

Die Konfigurationsdateien von cron-apt liegen im Verzeichnis /etc/cron-apt/.

Wichtige Konfigurationsdateien

Neben der Haupt-Konfigurations-Datei /etc/cron-apt/config befinden sich nach der Installation die wichtigsten Konfigurationsdateien im Ordner /etc/cron-apt/action.d.

config

Im Folgenden werden die wichtigsten Einstellungsmöglichkeiten in der config-Datei erläutert:

Einstellungsmöglichkeiten von config
Parameter Wert Beschreibung
APTCOMMAND /usr/bin/aptitude Pfad zum Paketmanager, der von cron-apt verwendet werden soll. Hier wird aptitude verwendet, weitere Möglichkeiten sind apt-get oder apt-file
MAILTO "Deine@Emailadresse.de; Weitere@Emailadresse" An diese E-Mailadressen werden Benachrichtigungen versendet. (Beispiel nach einem Upgrade {dl} )
MAILON upgrade Benachrichtigungen werden nur bei einem Paketupgrade verschickt. Man kann sich auch immer benachrichtigen lassen (always) oder auch nur bei Fehlern (error).
action.d/0-update

Der Inhalt der Datei ist:

update -o quiet=2 

Experten-Info:

Die Parameter bewirken ein Update der Quellen, die auch der Paketmanager aptitude oder apt-get (zu finden unter /etc/apt/sources.list) benutzt. Die Ausgabe wird bis auf eine Zeile unterdrückt (Parameter -o quiet=2). Weitere Parameter kann man den Man-Pages von aptitude oder apt-get entnehmen.

action.d/3-download

In dieser Datei steht:

autoclean -y
dist-upgrade -d -y -o APT::Get::Show-Upgraded=true 

Der erste Befehl bewirkt das Löschen veralteter Pakete aus dem Paketcache. Anschließend werden Updates herunter geladen und angezeigt, aber nicht installiert. Der Parameter -d weist den Paketmanager an, die neuen Pakete nur herunter zu laden. Auszug aus der Man-Page von aptitude:

-d, --download-only
    Die erforderlichen Paketdateien herunterladen und im Paketcache speichern, aber nichts installieren oder
    löschen.

Weitergehende Einstellungen

Wenn man die Updates nicht nur herunter laden, sondern sich auch darüber informieren lassen will, dann ist unter /usr/share/doc/cron-apt/examples/9-notify ein Beispiel gegeben um das zu verwirklichen:

-q -q --no-act upgrade

Die Datei muss nach /etc/cron-apt/action.d/ kopiert werden und in /etc/cron-apt/config muss die Mailadresse angegeben werden, an die die Nachrichten verschickt werden soll. Weiterhin muss das Ereignis definiert werden, wann eine Nachricht gesendet werden soll (siehe config-Datei).

Zeitsteuerung

In der Standard-Installation würde bei einem dauerhaft online befindlichen System cron-apt immer um 04:00 Uhr ausgeführt werden. Dies ist geregelt unter /etc/cron.d/cron-apt:

  # Every night at 4 o'clock.
  0 4     * * *   root    test -x /usr/sbin/cron-apt && /usr/sbin/cron-apt
  # Every hour.
  # 0 *   * * *   root    test -x /usr/sbin/cron-apt && /usr/sbin/cron-apt /etc/cron-apt/config2
  # Every five minutes.
  # */5 * * * *   root    test -x /usr/sbin/cron-apt && /usr/sbin/cron-apt /etc/cron-apt/config2

Bei einem nicht dauerhaft online befindlichen System würde dieser Croneintrag dazu führen, dass bei Systemstart cron-apt ausgeführt werden würde. Wenn dies nicht gewünscht ist, sollte dieser Eintrag gelöscht werden und statt dessen ein Eintrag in cron.daily, cron.hourly oder cron.weekly mit einem Softlink (Symlink) erstellt werden:

ln -s /usr/sbin/cron-apt /etc/cron.daily/cron-apt

Experten-Info:

In der Config-Datei von cron-apt kann ein zufälliger Offset eingerichtet werden, der die Zeit der Ausführung um eine gewisse Dauer versetzt (RUNSLEEP=3600). Diese Einstellung würde ein Update zwischen 04:00 und 05:00 Uhr bewirken, obwohl der Cron-Job um 04:00 Uhr gestartet wird. Dies ist hilfreich um die Server, die die Updates bereitstellen, nicht zu einem gewissen Zeitpunkt zu sehr zu belasten.

Cron-apt testen

Um cron-apt zu testen im Terminal[3] den folgenden Befehl ausführen:

sudo cron-apt -s 

Besondere Fälle

Updates automatisch installieren

Unter /etc/cron-apt/action.d/3-download das -d (only download) entfernen.

Zusätzlich sollte unter Startprogramme die Aktualisierungsbenachrichtigung deaktiviert werden. Sonst wird der User in Gnome über Updates informiert, wenn im Hintergrund eine Updateprüfung Updates gefunden hat. Das würde User nur dazu verleiten die Updates selbst zu starten, dann würden aber zwei Updates gleichzeitig angestoßen, was zu Fehlermeldungen führt.

Außerdem sollte in den Einstellungen der Aktualisierungsverwaltung (unter dem Reiter Aktualisierungen) "Automatische Aktualisierungen" deaktiviert werden.

Achtung!

Es kann passieren, dass der User das System herunterfährt, während Updates installiert werden, da die Updates ja nun im Hintergrund stattfinden. Dies kann zu einem nicht mehr bootbarem System führen. Eine Lösung wäre es, den Rechner so einzustellen, dass er nicht mehr herunterfährt, sondern in den Ruhezustand geht.

Anderer Workarround für dieses Problem: das Paket unattended-upgrades stellte einen Mechanismus bereit, um das Herunterfahren zu verzögern, bis die Updates installiert sind. Mithilfe dieses Scripts, das anstellte des eigentlichen cron-apt-Befehls aufgerufen wird, sollte man auf der sicheren Seite sein:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
#!/bin/sh

# create lockfile so the shutdown ist postponed when cron-apt is running

python -c 'import apt_pkg, gtk; apt_pkg.get_lock("/var/run/unattended-upgrades.lock"); gtk.main()' &

# execute cron-apt
/usr/sbin/cron-apt

# remove lockfile after end of cron-apt
rm -rf /var/run/unattended-upgrades.lock

Das Paket unattended-upgrades ist standardmäßig installiert und prüft beim Herunterfahren in /etc/init.d/unattended-upgrades auf Vorhandensein eines lockfiles in /var/run/. python-gtk2 wird außerdem benötigt um den Lock zu erzeugen, auch dieses Paket sollte standardmäßig installiert sein.

Spezielle sources.list

Man kann cron-apt eine spezielle sources.list zuweisen, um beispielsweise nur security-updates einspielen zu können. Dazu setzt man den entsprechenden Pfad in /etc/cron-apt/config:

OPTIONS="-q -o Dir::Etc::SourceList=/etc/apt/security-sources.list"

Dieser Eintrag würde cron-apt veranlassen, die Datei /etc/apt/security-sources.list als Quellenangabe zu verwenden. Eine mögliche security-sources.list sieht zum Beispiel so aus:

deb http://security.ubuntu.com/ubuntu hardy-security main restricted multiverse universe
deb-src http://security.ubuntu.com/ubuntu hardy-security restricted main multiverse universe

Aptitude, apt-get oder apt-file benutzen

cron-apt kann verschiedene Paketmanager verwenden (aptitude, apt-get oder apt-file). In der Datei /etc/cron-apt/config ist der entsprechende Wert einzusetzen (siehe APTCOMMAND).

Hinweis:

Es ist darauf zu achten, dass einige Parameter in den Config-Dateien verändert werden müssen, wie beispielsweise -o quiet statt -q in der Datei 0-update bei Verwendung von apt-get statt aptitude).

ubuntuusers.local › Wikicron-apt