Garder sa Debian à jour (sans se fatiguer)

Je compile ici quelques astuces pour garder votre distribution à jour tout en restant décontracté et souriant.

Comment effectuer les mises à jour ?

Il vous faut au préalable un fichier sources.list correctement rempli avec vos dépôts. Pour plus d'informations sur ce fichier :

$ man sources.list

Pour mettre à jour les paquets de votre distribution, la première étape consiste à mettre à jour la liste des paquets disponibles.

# aptitude update

Puis on applique les mises à jours.

# aptitude upgrade
# aptitude safe-upgrade

ou

# aptitude full-upgrade

aptitude upgrade et safe-upgrade sont synonymes, elles reviennent donc au même. Ces commandes vont mettre à jour les paquets et installer de nouvelles dépendances si besoin. Impossible, en revanche, de supprimer un paquet pour pouvoir en upgrader un autre. Ces commandes sont conservatrices.

aptitude full-upgrade met à jour tous les paquets, en installant ou supprimant des paquets si nécessaire. Cette commande est moins conservatrice. Elle est à double-tranchant : elle est capable d'effectuer des mises à jours que l'upgrade ou le safe-upgrade ne pouvaient pas faire, mais elle peut aussi effectuer des actions non souhaitées, comme supprimer un paquet utilisé comme dépendance par un autre programme.

Il est donc conseillé d'utiliser régulièrement l'upgrade/safe-upgrade, et de n'utiliser le full-upgrade que lorsque cela est réellement nécessaire (dans ce cas de figure, aptitude affiche souvent "x paquets non mis à jours").

Note : la commande aptitude dist-upgrade est synonyme de full-upgrade.

Mises à jour de sécurité

Elles sont présentes sur le dépôts Debian Security :

$ cat /etc/apt/sources.list
[..]
deb http://security.debian.org/ squeeze/updates main

Ces mises à jours étant sensibles, il faut les installer rapidement. Aussi il est important d'être au courant des mises à jour de sécurité. Pour cela, rien de mieux que la mailing-list debian-security-announce. À chaque mise à jour d'un paquet, un mail explicatif est envoyé, indiquant quelles failles sont corrigées, dans quelles versions. Je vous recommande fortement de vous inscrire à cette mailing-list. Il existe également un compte Twitter.

Exemple d'un Debian Security Advisory

Mises à jour automatiques

Nous allons utiliser cron-apt. Cron-apt permet de vérifier à intervalle régulier, via cron, si des mises à jours sont disponibles. Il est capable d'envoyer un rapport par mail. Il est également possible d'installer automatiquement les mises à jour.

Attention : Même si cela peut s'avérer pratique, il est déconseillé d'automatiser entièrement le processus de mise à jour. Il est possible qu'une mise à jour provoque un erreur entraînant l’arrêt d'un service. Vérifiez toujours que les mises à jours se déroulent correctement, et bien entendu, prenez vos précautions avant de les appliquer en production.

Nous allons configurer cron-apt pour qu'il vérifie les mises à jour de sécurité seulement. Il faut au préalable extraire les dépôts Debian Security pour les copier dans un fichier dédié.

# grep security /etc/apt/sources.list > /etc/apt/sources.list.d/security.list

On installe cron-apt :

# aptitude install cron-apt

Dans le fichier /etc/cron-apt/config, on indique que l'on souhaite utiliser aptitude, l'adresse mail de l'administrateur, le dépôt à utiliser.

APTCOMMAND=/usr/bin/aptitude
OPTIONS="-o quiet=1 -o Dir::Etc::SourceList=/etc/apt/sources.list.d/security.list"
MAILTO="cuillère@soupe.fr"
MAILON="always"

À condition qu'un serveur SMTP soit installé et configuré, l'administrateur recevra un mail sur cuillère@soupe.fr, par défaut toutes les nuits à 4h du matin. La fréquence des mails se modifie dans /etc/cron.d/cron-apt, comme n'importe quelle tâche cron.

$ cat /etc/cron.d/cron-apt
#
# Regular cron jobs for the cron-apt package
#
# 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

Comme je l'ai déjà dit, par défaut cron-apt ne fait que télécharger les mises à jour, sans les appliquer. Pour également installer automatiquement les mises à jours, modifiez le fichier /etc/cron-apt/action.d/3-download, qui ressemble à l’origine à ceci :

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

en ceci :

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

Vous pouvez adapter la ligne en fonction de vos besoins, en préférant par exemple un safe-upgrade.

Conclusion

Voila les quelques conseils que je peux donner pour mettre à jour Debian. Nous avons vu ce qui différencie un aptitude safe-upgrade d'un full-upgrade. Je me suis rendu compte en écrivant ce billet qu'il y avait beaucoup à dire sur aptitude, qui pourront donner matière à d'autres articles. Quoi qu'il en soit, gardez bien en tête qu'il est primordial d'avoir une politique stricte et rigoureuse pour vos serveurs, et qu'en ce sens, la mise à jour automatique du système n'est pas adaptée à toutes les situations. Il est également essentiel d'être au courant des update de sécurité pour pouvoir réagir très rapidement lorsque nécessaire.

10 réflexions au sujet de « Garder sa Debian à jour (sans se fatiguer) »

  1. Ce qu'on oublie souvent avec les mises à jour (automatiques ou non), c'est que lorsqu'une bibliothèque est mise à jour, cela n'est pas pris en compte par les processus déjà lancés et il faut normalement les relancer.

    L'utilitaire checkrestart du paquet debian-goodies liste les processus à relancer après une mise à jour.

  2. Merci jeyg pour cet article!
    Etant sous debian wheezy et donc unstable, je me méfie un peu des mises à jour et je contrôle toujours le type de paquet mis à jour (surtout ceux liés à gnome shell) car je me suis retrouvé plusieurs fois avec un gnome shell handicapé à la suite d'une mise à jour :p

    Il semblerait cependant que depuis la dernière mise à jour des paquets gnome-shell (GNOME Shell 3.2.2.1), on ait gagné de manière significative en stabilité.

  3. @Yann : Intéressant ce paquet debian-goodies, je ne connaissais pas. Merci !

    @openwebtechfr : Wheezy est actuellement la testing =) Il est vrai qu'en environnement testing mais surtout unstable, les màj des environnements de bureaux m'ont parfois apportées de mauvaises surprises...

  4. Hum, intéressant à souhait, ca va finir dans mon prochain vrac tout ca :)

    Pour ma part, a la place de la mailing list (pratique, mais limitant quand même) j'ai opté pour les flux RSS, qui me convienne bcp mieux, et qui, depuis mon agrégateur, me permet tout de suite de voir si le paquet me concerne ou pas. (http://www.debian.org/security/dsa)

    Par contre, l'auto-téléchargement et la prévention par mail ne fait pas double usage du coup ? Si déjà on est mis au courant des infos de sécurité par mail (et/ou par flux RSS ??)

  5. Ping : Nono’s Vrac 45 « m0le'o'blog

  6. Je ne savais pas qu'il y avait un flux RSS, merci de le signaler. Ceci dit je préfère personnellement la mailing-list.

    Pour l'histoire de redondance auto-téléchargement et mails/rss DSA, je pense qu'il est toujours nécessaire de savoir un maximum ce qu'il se passe sur le système. Par conséquent même si la procédure de mise à jour est automatisée ou semi-automatisée, cela ne doit pas encourager l'administrateur à se couper du monde en ne suivant plus les alertes de sécurité.

  7. Pour ceux qui ont un gros parc à gérer, il y a un outil très intéressants qui est arrivé dans squeeze: apt-dater (http://www.ibh.de/apt-dater/).

    Il permet de gerer les installations de paquets depuis un point central en combinant notamment ssh, sudo (ou autre methode d'execution privilégiée) et screen.

  8. Ping : Mise a jour automatique de debian | Linux et Geekeries

  9. Ping : Les commandes Linux qui vous feront gagner du temps

  10. Ping : Mémo commandes Linux ( 2 ) | Mémos RT

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Vous pouvez utiliser ces balises et attributs HTML : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>