Versucht doch einfach mal ;-):
apt-get moo
Versucht doch einfach mal ;-):
apt-get moo
Wie der lokale Paket-Manager funktioniert kann man nicht nur per Script und Cronjobs sondern auch über die umfangreiche APT-Konfigurations-Syntax steuern. Die wichtigsten Parameter sind direkt im standardmäßig angelegten Cronjob „/etc/cron.daily/apt“ beschrieben.
Dazu einfach unter
/etc/apt/apt.conf.d/
eine Konfigurations-Datei anlegen:
vi /etc/apt/apt.conf.d/01proxy
und in diese den folgenden Inhalt schreiben:
Acquire::http::Proxy "http://[[user][:pass]@]host[:port]/";
Hier z.B. die Konfiguration wenn lokal der apt-cacher installiert wurde:
Acquire::http::Proxy "http://localhost:3128/";
Dafür ist erst einmal das zusätzliche Paket „unattended-upgrades“ notwendig.
aptitude install unattended-upgrades
Mit der Installation wird die notwendige Konfigurationsdatei „/etc/apt/apt.conf.d/50unattended-upgrades“ (beschrieben für Debian)
// Automatically upgrade packages from these (origin, archive) pairs Unattended-Upgrade::Allowed-Origins { "${distro_id} stable"; "${distro_id} ${distro_codename}-security"; // "${distro_id} ${distro_codename}-updates"; // "${distro_id} ${distro_codename}-proposed-updates"; }; // List of packages to not update Unattended-Upgrade::Package-Blacklist { // "vim"; // "libc6"; // "libc6-dev"; // "libc6-i686"; "^linux-image.*"; }; // Send email to this address for problems or packages upgrades // If empty or unset then no email is sent, make sure that you // have a working mail setup on your system. The package 'mailx' // must be installed or anything that provides /usr/bin/mail. //Unattended-Upgrade::Mail "root@localhost"; // Do automatic removal of new unused dependencies after the upgrade // (equivalent to apt-get autoremove) //Unattended-Upgrade::Remove-Unused-Dependencies "false"; // Automatically reboot *WITHOUT CONFIRMATION* if a // the file /var/run/reboot-required is found after the upgrade //Unattended-Upgrade::Automatic-Reboot "false"; // Use apt bandwidth limit feature, this example limits the download // speed to 70kb/sec //Acquire::http::Dl-Limit "70";
installiert. Hier wird bestimmt, welche Pakete automatisch installiert bzw. von der automatischen Installation ausgenommen werden. Man kann sich auch per Email bei Fehlern benachrichtigen lassen.
Damit sind die automatischen Updates aber noch nicht aktiv!
Dafür müssen erst die folgenden drei Zeilen
APT::Periodic::Enable "1"; APT::Periodic::Update-Package-Lists "1"; APT::Periodic::Unattended-Upgrade "1";
in die Datei „/etc/apt/apt.conf.d/10periodic“ geschrieben/angehängt werden. Durch diese zwei Zeilen werden die Paket-Listen einmal täglich aktualisiert und die Pakete, die in „/etc/apt/apt.conf.d/50unattended-upgrades“ konfiguriert sind, installiert.
Für die Benamung der Datei habe ich bisher noch keine Beschreibung gefunden. Da diese für die Funktion aber ohne Bedeutung ist, habe ich mich nach dem Eintrag im Ubuntu-Wiki gerichtet, in dem ich diese Konfiguration auch gefunden habe.
Die Ausführung erfolgt dann durch das vorhandene APT-Script „/etc/cron.daily/apt“, das täglich ausgeführt wird.
Wer möchte kann sich die anstehenden Updates ja bereits downloaden. Dann braucht es bei der Installation nicht so lange. Dazu muss man einfach eine Zeile der umfangreichen APT-Konfiguration aktivieren, in dem man sie in eine Datei unterhalb von „/etc/apt/apt.conf.d/“ schreibt.
Hat man es z.B. wie oben bei den automatischen Updates eingerichtet, kann man die folgende Zeile in die Datei „/etc/apt/apt.conf.d/10periodic“ eintragen:
APT::Periodic::Download-Upgradeable-Packages "1";
Damit werden die anstehenden Update-Dateien einmal täglich heruntergeladen, aber nicht installiert.
Damit das standardmäßig vorhandene Script „/etc/cron.daily/apt“ auch das Aufräumen übernimmt, braucht man nur eine Zeile aktivieren.
APT::Periodic::AutocleanInterval "7";
Damit wird „apt-get autoclean“ alle 7 Tage ausgeführt.
Ich richte immer noch eine erweiterte Konfiguration für logrotate ein.
Wer seine anstehenden Linux-Updates per Nagios/Icinga überwacht, kann nach dem manuellen Neuanlegen der o.g. Dateien auf folgenden Fehler treffen:
'/usr/bin/apt-get -o 'Debug::NoLocking=true' -s -qq upgrade' exited with non-zero status. APT WARNING: 0 packages available for upgrade (0 critical updates). warnings detected, errors detected. run with -v for information
Beim Testen des angezeigten Befehls treten wie immer keine Fehler auf. Man ist ja root. Also sollte der Befehl als der Benutzer ausgeführt werden, unter dem die Monitoring-Software läuft:
su <monitoringbenutzer> -s /bin/bash
Der Parameter -s für die Shell ist optional, aber bei Systembenutzern ohne Shell notwendig. Danach sieht man dann erst den eigentlichen Fehler:
/usr/bin/apt-get -o 'Debug::NoLocking=true' -s -qq upgrade E: Konfigurationsdatei /etc/apt/apt.conf.d/10periodic wird geöffnet - ifstream::ifstream (13: Keine Berechtigung)
Einfach Leseberechtigungen für „Others“ auf die gemeldete Datei setzen und schon klappt’s mit dem Nachbarn ;-). Bei mir war die Ursache die restriktiv gesetzte UMASK im Profil.
Diese Konfiguration nutze ich für die automatischen Updates unter Debian/Ubuntu. Dabei liegen die angelegten Logfiles standardmäßig unter „/var/log/unattended-upgrades/“. Die Konfiguration des Speicherortes passiert in der APT-Konfigurationsdatei „/etc/apt/apt.conf.d/50unattended-upgrades“ über den Parameter „APT::UnattendedUpgrades::LogDir“. Der Pfad ist in der Logrotate-Konfiguration also entsprechend zu setzen:
/var/log/unattended-upgrades/unattended-upgrades.log { monthly missingok rotate 24 compress dateext notifempty olddir /var/log/unattended-upgrades/old/ } /var/log/unattended-upgrades/unattended-upgrades-dpkg*.log { daily missingok rotate 92 compress dateext olddir /var/log/unattended-upgrades/old/ }
Die Konfiguration sollte vor dem ersten Einsatz getestet werden:
logrotate -d /etc/logrotate.d/<ConfigDatei>
Dabei kommt dann in etwa so etwas heraus:
reading config file /etc/logrotate.d/unattended-upgrades reading config info for /var/log/unattended-upgrades/unattended-upgrades.log olddir is now /var/log/unattended-upgrades/old/ reading config info for /var/log/unattended-upgrades/unattended-upgrades-dpkg*.log olddir is now /var/log/unattended-upgrades/old/ Handling 2 logs rotating pattern: /var/log/unattended-upgrades/unattended-upgrades.log monthly (24 rotations) olddir is /var/log/unattended-upgrades/old/, empty log files are not rotated, old logs are removed considering log /var/log/unattended-upgrades/unattended-upgrades.log log does not need rotating rotating pattern: /var/log/unattended-upgrades/unattended-upgrades-dpkg*.log after 1 days (92 rotations) olddir is /var/log/unattended-upgrades/old/, empty log files are rotated, old logs are removed considering log /var/log/unattended-upgrades/unattended-upgrades-dpkg*.log log /var/log/unattended-upgrades/unattended-upgrades-dpkg*.log does not exist -- skipping