[[Vorlage(Getestet, bionic, focal)]] {{{#!vorlage Wissen [:Pakete_installieren: Installation von Programmen] [:Terminal: Ein Terminal öffnen] [:Editor: Einen Editor öffnen] [:sudo: Root-Rechte] }}} [[Inhaltsverzeichnis(2)]] Das Programm [http://inguza.com/software/cron-apt 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. Jegliche Verwendung benötigt Root-Rechte[4]. = Installation = Folgendes Paket muss installiert [1] werden: {{{#!vorlage Paketinstallation cron-apt, universe }}} = Einrichtung = Die Konfigurationsdateien von cron-apt liegen im Verzeichnis '''/etc/cron-apt/'''. == Wichtige Konfigurationsdateien == Neben der Hauptkonfigurations-Datei '''/etc/cron-apt/config''' befinden sich nach der Installation die wichtigsten Konfigurationsdateien im Ordner '''/etc/cron-apt/action.d'''. [[Anker(config)]] === config === Im Folgenden werden die wichtigsten Einstellungsmöglichkeiten in der '''config'''-Datei erläutert: ||<-3 cellstyle="text-align: center;" rowclass="titel"> 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. ([attachment:cron-apt/beispielemail: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 }}} {{{#!vorlage Experten Die Parameter bewirken ein Update der Paketquellen, die auch von '''aptitude''' oder '''apt-get''' (zu finden unter '''/etc/apt/sources.list''') benutzt werden. Die Ausgabe wird bis auf eine Zeile unterdrückt (Parameter ``-o quiet=2``). Weitere Parameter kann man den [:man:Manpages] von aptitude bzw. 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 vorhanden, 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 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 ([:ln:Symlink]) erstellt werden: {{{ ln -s /usr/sbin/cron-apt /etc/cron.daily/cron-apt }}} {{{#!vorlage Experten 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[2] den folgenden Befehl ausführen: {{{#!vorlage Befehl 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 [:Aktualisierungen/Konfiguration:Aktualisierungsbenachrichtigung] deaktiviert werden. Sonst wird der Benutzer einer grafischen Desktop-Umgebung über Updates informiert, wenn im Hintergrund eine Updateprüfung Updates gefunden hat. Das würde 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. {{{#!vorlage Warnung Es kann passieren, dass der Benutzer 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 stattdessen in den Ruhezustand geht. Ein anderer Workaround für dieses Problem ist das Paket '''unattended-upgrades'''. Dieses stellte einen Mechanismus bereit, um das Herunterfahren zu verzögern, bis die Updates installiert sind. Mithilfe dieses Scripts, das anstelle des eigentlichen cron-apt-Befehls aufgerufen wird, sollte man auf der sicheren Seite sein: }}} {{{#!code bash #!/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/'''. Außerdem wird das Paket '''python-gtk2''' benötigt, um den Lock zu erzeugen (auch dieses Paket sollte standardmäßig installiert sein, fehlt aber bei der Server-Variante von Ubuntu). == 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 precise-security main restricted multiverse universe deb-src http://security.ubuntu.com/ubuntu precise-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 [#config APTCOMMAND]). {{{#!vorlage 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). }}} = Links = * [:APT:] {Übersicht} Übersichtsseite # tag: Paketverwaltung, Server