« AutoUpdate » : différence entre les versions

De Le Wiki de Lug
Aller à la navigation Aller à la recherche
Ligne 117 : Ligne 117 :
  # vi /etc/apt/apt.conf.d/50unattended-upgrades
  # vi /etc/apt/apt.conf.d/50unattended-upgrades


  ...
  <font color = grey>...</font>
  <font color = blue>Unattended-Upgrade::Mail "root";</font>
  <font color = blue>Unattended-Upgrade::Mail "root";</font>
  ...
   
// Set this value to one of:
//    "<font color = green>always</font>", "<font color = green>only-on-error</font>" or "<font color = green>on-change</font>"
// If this is not set, then any legacy MailOnlyOnError (boolean) value
// is used to chose between "only-on-error" and "on-change"
<font color = blue>Unattended-Upgrade::MailReport "<font color = green>on-change</font>";</font>
<font color = grey>...</font>


=== Nettoyer automatiquement les dépendences inutiles ===
=== Nettoyer automatiquement les dépendences inutiles ===

Version du 22 octobre 2021 à 10:53

Alpine Linux

Crontab

# crontab -e

On ajoute la ligne suivante pour que chaque jour à 4h30 la mise à jour s'effectue avec les logs dans le fichier /var/log/apkcrontupdate.log

...
30      4       *       *       *       /bin/date > /var/log/apkcrontupdate.log && /sbin/apk -Uv upgrade >> /var/log/apkcrontupdate.log

On peut également recevoir le résultat par mail :

...
MAILTO=root
30      4       *       *       *       /bin/date > /var/log/apkcrontupdate.log && /sbin/apk -Uv upgrade >> /var/log/apkcrontupdate.log

APK-Autoupdate

Installation

Si absent il faut ajouter le dépôt "testing" aux sources :

# echo 'https://dl-cdn.alpinelinux.org/alpine/edge/testing' >> /etc/apk/repositories

On installe le paquêt :

# apk update && apk upgrade
# apk add apk-autoupdate

Configuration

# vi /etc/apk/autoupdate.conf

Outre les listes blanche et noire habituelles il est possible de spécifier une commande autre que "restart" (si plusieurs séparées par un espace blanc).

  • Par exemple pour recharger Nginx plutôt que le redémarrer :
...
# Note: Case patterns (shell "case") may be used in program path.
programs_services="/usr/sbin/nginx:nginx:reload"
...
  • Exemple pour recharger lighttpd plutôt que le redémarrer :
...
# Note: Case patterns (shell "case") may be used in program path.
programs_services="/usr/sbin/lighttpd:lighttpd:reload"
...

Test

# apk-autoupdate -sv

Crontab

# crontab -e

On ajoute la ligne suivante pour que chaque jour à 4h30 la mise à jour s'effectue avec les logs dans le fichier /var/log/apk-autoupdate.log

...
30      4       *       *       *       /bin/date > /var/log/apk-autoupdate.log && /usr/sbin/apk-autoupdate -v >> /var/log/apk-autoupdate.log

On peut également recevoir le résultat par mail :

...
MAILTO=root
30      4       *       *       *       /bin/date > /var/log/apk-autoupdate.log && /usr/sbin/apk-autoupdate -v >> /var/log/apk-autoupdate.log

Debian / Ubuntu

On utilise l'outil fournit "unattended-upgrades"

Installation

# apt update && apt upgrade
# apt install unattended-upgrades
# systemctl enable unattended-upgrades
# systemctl start unattended-upgrades

Configuration

Sélection des MAJ

# vi /etc/apt/apt.conf.d/50unattended-upgrades

On active les mises à jour souhaitées en supprimant le "//" devant la ligne idoine, ici nous gardons la configuration par défaut qui ne met automatiquement à jour que les MAJ de sécurité :

...
// pocket these get automatically pulled in.
Unattended-Upgrade::Allowed-Origins {
        "${distro_id}:${distro_codename}";
        "${distro_id}:${distro_codename}-security";
        // Extended Security Maintenance; doesn't necessarily exist for
        // every release and this system may not have it installed, but if
        // available, the policy for updates is such that unattended-upgrades
        // should also install from here by default.
        "${distro_id}ESMApps:${distro_codename}-apps-security";
        "${distro_id}ESM:${distro_codename}-infra-security";
//      "${distro_id}:${distro_codename}-updates";
//      "${distro_id}:${distro_codename}-proposed";
//      "${distro_id}:${distro_codename}-backports";
...

Activer l'envoie de rapports par mail

# vi /etc/apt/apt.conf.d/50unattended-upgrades
...
Unattended-Upgrade::Mail "root";

// Set this value to one of:
//    "always", "only-on-error" or "on-change"
// If this is not set, then any legacy MailOnlyOnError (boolean) value
// is used to chose between "only-on-error" and "on-change"
Unattended-Upgrade::MailReport "on-change";
...

Nettoyer automatiquement les dépendences inutiles

# vi /etc/apt/apt.conf.d/50unattended-upgrades
...
// Remove unused automatically installed kernel-related packages
// (kernel images, kernel headers and kernel version locked tools).
Unattended-Upgrade::Remove-Unused-Kernel-Packages "true";

// Do automatic removal of newly unused dependencies after the upgrade
Unattended-Upgrade::Remove-New-Unused-Dependencies "true";

// Do automatic removal of unused packages after the upgrade
// (equivalent to apt-get autoremove)
Unattended-Upgrade::Remove-Unused-Dependencies "true";
...

Ensuite on configure la fréquence des mises à jour :

# dpkg-reconfigure -plow unattended-upgrades

-> <Yes>

# vi /etc/apt/apt.conf.d/20auto-upgrades
APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Unattended-Upgrade "1";
APT::Periodic::Verbose "2";
APT::Periodic::AutocleanInterval "7";

Les lignes ajoutées permettent d'avoir des rapports plus complets et de nettoyer les paquets tous les 7 jours.

On relance le service

# systemctl restart unattended-upgrades

Test

# unattended-upgrades --dry-run --debug