Da ich mir die Frage gestellt habe wie man einen Linux Server am besten automatisch Updaten kann, bin ich auf die Software „unattended-upgrades“ gestoßen. Ich möchte euch hier zeigen, wie man „unattended-upgrades“ einrichtet/installiert.
Bei Cubian (Cubietruck) muss vor den Befehlen jeweils immer ein sudo davor oder einmalig „sudo -i“ ausführen! 😉
- „unattended-upgrades“ installieren:
apt-get install unattended-upgrades
- Config anpassen (ist eigentlich alles selbsterklärend) > nano /etc/apt/apt.conf.d/50unattended-upgrades
Beispiel:// 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"; }; // 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 "Name@Domain.net"; // Do automatic removal of new unused dependencies after the upgrade // (equivalent to apt-get autoremove) Unattended-Upgrade::Remove-Unused-Dependencies "true"; // 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";
- Config anpassen (ist eigentlich alles selbsterklärend) > nano /etc/apt/apt.conf.d/02periodic
Beispiel:// Enable the update/upgrade script (0=disable) APT::Periodic::Enable "1"; // Set maximum size of the cache in MB (0=disable) APT::Periodic::MaxSize "512"; // Do "apt-get update" automatically every n-days (0=disable) APT::Periodic::Update-Package-Lists "1"; // Do "apt-get upgrade --download-only" every n-days (0=disable) APT::Periodic::Download-Upgradeable-Packages "1"; // Run the "unattended-upgrade" security upgrade script // every n-days (0=disabled) // Requires the package "unattended-upgrades" and will write // a log in /var/log/unattended-upgrades APT::Periodic::Unattended-Upgrade "1"; // Do "apt-get autoclean" every n-days (0=disable) APT::Periodic::AutocleanInterval "7"; // Send report mail to root // 0: no report (or null string) // 1: progress report (actually any string) // 2: + command outputs (remove -qq, remove 2>/dev/null, add -d) // 3: + trace on APT::Periodic::Verbose "0";
- testen ob alles funktioniert:
unattended-upgrades --dry-run
- In den Log-Dateien schauen und gucken ob fehler aufgetaucht sind:
tail /var/log/unattended-upgrades/unattended-upgrades.log
Ganz wichtig:
Da auch Betriebsysteme wie Linux neue Versionen bekommen (6, 7 bzw. squeeze, wheezy usw.) muss ggf. auch dementsprechend in der Datei „/etc/apt/apt.conf.d/50unattended-upgrades“ „„${distro_id} stable“;“ angepasst werden:
bei Debian Jessie: kann alles so bleiben (Stand 24.06.2015)
bei Debian Wheezy:
"${distro_id} oldstable";
bei Debian Squeeze:
folgendes hinzfügen:
"${distro_id} ${distro_codename}-lts";
Oder weitere/andere Quellen:
${distro_id} ${distro_codename}-backports";
Leider musste ich feststellen, dass auf manchen Servern „unattended-upgrades“ nicht einwandfrei funktionierte sprich „unattended-upgrades“ einfach keine Updates heruntergeladen und installiert hatte . Oft lag es aber an „apt“, entweder fehlte die Datei „/etc/cron.daily/apt“, hatte ne falsche Berechtigung oder das Paket hatte irgendwie ne Macke. Wenn ihr die gleichen Probleme haben solltet, mal folgendes durchgehen:
Prüfen ob das Paket „apt“ überhaupt installiert ist:
dpkg -l | grep apt
- Prüfen ob die Datei „/etc/cron.daily/apt“ fehlt:
ls -l /etc/cron.daily/apt
wenn ja, entweder das .deb Paket runterladen, entpacken und die Datein kopieren oder einfach direkt die apt Datei von mir herrunterladen und in das Verzeichnis „/etc/cron.daily/“ verschieben:
wget http://pub.maffert.net/debian/apt
mv apt /etc/cron.daily/
- Prüfen ob die Datei „/etc/cron.daily/apt“ eine falsche Berechtigung hat:
ls -l /etc/cron.daily/apt
sollte in etwa so aussehen:
-rwxr-xr-x 1 root root 14799 Apr 15 2011 /etc/cron.daily/apt
wenn die Berechtigung anders ist, dann richtig setzen:
chmod aou+x /etc/cron.daily/apt
Wenn es immer noch Probleme geben sollte, einfach via Kommentar nachfragen und das Problem genau schildern! 😉