Mise à niveau Debian Lenny vers Squeeze

De ClissXXI.


Cette page regroupe quelques extraits qui nous ont paru les plus importants des notes de publication de Debian Squeeze, et en particulier des notes de mise à niveau depuis Debian Lenny, complétées de quelques remarques personnelles.

Si vous mettez à jour un système Debian, il est conseillé de lire vous-même notes de mise à niveau, car certaines informations utiles pour votre cas pourraient ne pas figurer ici.


Sommaire


Choses à connaître avant la mise à niveau

Avant de procéder à la mise à jour de votre système, il est bon d'être au courant de différents points de nouveautés ou de points nécessitant une attention particulière. J'ai regroupé ici les points qui me semblaient les plus importants.

Installation automatique des paquets recommandés

Lors de l'installation d'un paquet sous Squeeze, APT installe maintenant automatiquement les paquets recommandés par ce paquet. Les paquets recommandés permettent à un logiciel de proposer certaines fonctionnalités facultatives, sans toutefois obliger l'utilisateur à installer ces paquets s'il sait qu'il n'en aura pas besoin (contrairement à la liste des paquets dont depend un paquet). Il s'agit de la liste de paquets apparaissant dans la ligne commençant par « Recommends: » dans les informations de contrôle des paquets.

Si vous souhaitez n'installer que le minimum de paquets dans votre système, et que vous êtes capables de déterminer les commandes et paquets qui empêchent l'utilisation de certaines fonctionnalités de vos logiciels, vous pouvez désactiver cette installation des paquets recommandés en ajoutant une ligne à la configuration d'APT.

Vous pouvez par exemple l'ajouter dans un fichier du répertoire /etc/apt/apt.conf.d (j'ai l'habitude de créer le fichier /etc/apt/apt.conf.d/99local où je regroupe ma configuration locale d'APT. Le « 99 » indique que le fichier sera évalué après les autres fichiers du répertoire, permettant de redéfinir des configurations données dans les fichiers placés là par d'autres paquets du système).

APT::Install-Recommends "false";

Amorçage par dépendances

Squeeze introduit une fonctionnalité intéressante d'amorçage (c'est à dire du démarrage du système et de ses services) par dépendances qui permet un démarrage plus rapide de la machine, voir script_rc_debian.

« Cette fonctionnalité est activé par sysv-rc en utilisant insserv pour ordonner les scripts init.d en fonction de leurs dépendances déclarées [...] [Elle] est activée par défaut sur les nouvelles installations et, si possible, lors des mises à niveau. Pour la désactiver, indiquez

CONCURRENCY=none

dans /etc/default/rcS. Pour de plus amples renseignements à propos de cette fonctionnalité, veuillez consulter les renseignements disponibles dans /usr/share/doc/insserv/README.Debian. »

Configurations de clavier unifiées

Auparavant, il était nécessaire d'indiquer une configuration du clavier pour la console, et de refaire l'opération pour l'environnement graphique sous X, alors qu'il s'agit du même clavier. Ce n'est plus le cas sous Squeeze, où la configuration de ces deux systèmes ont été unifiées.

« les configurations de clavier ont été unifiées pour qu'à la fois la console et le serveur Xorg utilisent les mêmes réglages. Les configurations de clavier sont maintenant définies dans le fichier de configuration /etc/default/keyboard qui écrase les configurations définies dans le fichier de configuration de Xorg. »

« Vous pouvez reconfigurer la disposition du clavier et les réglages associés en exécutant dpkg-reconfigure keyboard-configuration ou en modifiant vous-même le fichier de configuration /etc/default/keyboard. »

La section proposed-updates

La section des dépôts de paquets Debian « proposed-updates » n'est « pas précisément une nouvelle fonctionnalité de Debian, mais elle est relativement passée inaperçue jusqu'ici. »

« Toutes les modifications de la distribution stable publiée, ainsi que celles destinées à l'ancienne version stable passent par une période étendue de tests avant d'être acceptées dans l'archive. Chacune des mises à jour de la version stable (ou l'ancienne version stable) est appelée une mise à jour mineure (« point release »). La préparation de ces mises à jour mineures se fait par le mécanisme proposed-updates. »

« Si vous souhaitez participer aux tests de ces paquets avant qu'ils ne soient officiellement ajoutés à une mise à jour mineure, vous pouvez le faire en ajoutant la section proposed-updates au fichier sources.list : »

deb     http://mirrors.kernel.org/debian squeeze-proposed-updates main contrib
deb-src http://mirrors.kernel.org/debian squeeze-proposed-updates main contrib

Notez que, dans le fichier des dépôts Debian, les lignes commençant par « deb-src » ne sont utiles que si vous souhaitez télécharger les sources de certains paquets pour les examiner ou les recompiler. Si vous ne pensez pas avoir besoin des sources, vous pouvez omettre ou commenter ces lignes, cela accélèrera légèrement la mise à jour de la liste des paquets.

La section stable-updates

Sous les versions précédentes de Debian, la mise à jour de certaines données qui nécessitaient une mise à jour régulière, comme les anti-virus ou les fuseaux horaires, était fournie par un dépôt dédié fourni par « volatile.debian.org ». Sous squeeze, ce dépôt disparait, et est remplacé par une extension du dépôt normal nommée « stables-updates » (ou « squeeze-updates » pour Squeeze).

« Cette voie sera utilisée pour les mises à jour que de nombreux utilisateurs voudront installer sur leurs systèmes avant la mise à jour mineure suivante, comme les mises à jour d'analyseurs de virus et données de fuseau horaire. Tous les paquets de squeeze-updates seront intégrés dans les mises à jour mineures.

Pour utiliser les paquets de squeeze-updates, vous pouvez ajouter une entrée au fichier sources.list : »

deb     http://mirrors.kernel.org/debian squeeze-updates main contrib
deb-src http://mirrors.kernel.org/debian squeeze-updates main contrib

« Quand un nouveau paquet devient disponible par squeeze-updates, ce sera annoncé sur la liste de diffusion debian-stable-announce. »

La désactivation d'Ipv6 ne peut plus être effectuée de la même façon

IPv6 étant maintenant compilée dans le kernel plutôt qu'en module, l'ajout de directives dans /etc/modprobe.d pour désactiver le support IPv6 ne fonctionne plus. Il faut maintenant passer par sysctl, et s'assurer de quelques points pour éviter des problèmes avec exim et ssh. Tout ceci est détaillée sur le wiki Debian.

En résumé, voici les points à suivre si vous voulez désactiver le support IPv6 (si vous ne savez pas si vous devez le faire, alors ne le faites pas, ça vous évitera des soucis potentiels avec certains logiciels).

  • désactivez le module du noyau :
# echo net.ipv6.conf.all.disable_ipv6=1 > /etc/sysctl.d/disableipv6.conf
  • commentez les adresses IPv6 figurant dans le fichier /etc/hosts
  • modifiez la configuration d'exim, qui ne fonctionnera sinon pas correctement sans le support IPv6 du noyau:
    • ajoutez disable_ipv6 = true dans votre fichier de configuration d'exim
    • lancez la commande update-exim4.conf
    • redémarrez exim (si vous ne redémarrez tout le système juste après)
  • modifiez la configuration de SSH pour lui indiquer de ne plus rechercher les interfaces IPv6:
    • ajoutez AddressFamily inet dans votre fichier /etc/ssh/sshd_config
    • redémarrez sshd (si vous ne redémarrez tout le système juste après)
  • redémarrez votre système

Réduire le temps d'indisponibilité des services

Si le système que vous mettez à jour est utilisé par d'autres utilisateurs, vous pourriez vouloir réduire autant que possible la durée d'indisponibilité de la machine. Voici ce que conseillent les notes de mise à niveau:

« Vous pouvez réduire le temps d'arrêt en faisant une mise à niveau minimale du système (consultez Section 4.4.4, « Mise à niveau minimale du système »), puis une mise à niveau du noyau et un redémarrage (consultez Section 4.4.5, « Mettre à niveau le noyau et udev »), et ensuite une mise à niveau des paquets fournissant vos services critiques. Mettez-les à niveau avant de lancer la mise à niveau totale (Section 4.4.6, « Mettre à niveau le système ») pour vous assurer que ces services critiques sont lancés et sont disponibles pendant la mise à niveau, et réduisez ainsi leur temps d'arrêt. »

Attention aux mises à jour à distance

Une mise à jour d'un système sans être connecté à sa console peut parfois poser des problèmes. Voici les recommandations des notes de mise à jour:

« Si vous effectuez une mise à niveau à distance par un lien ssh, il est fortement recommandé de prendre toutes les précautions nécessaires pour pouvoir accéder au serveur par un terminal série distant. Il est possible qu'après la mise à niveau du noyau et le redémarrage, les noms de quelques périphériques soient changés (comme décrit en Section 4.6.2, « Réordonnancement de l'énumération des périphériques ») et vous devrez corriger la configuration du système depuis une console locale. Par ailleurs, si le système est redémarré accidentellement au milieu de la mise à niveau, il est possible que vous deviez utiliser une console locale pour réparer le système. »

L'accès via VPN (avec des outils tels que tinc) risquent plus fortement encore de rentre impossible votre accès à distance lors de la mise à jour.

Sources non officielles et rétroportages

Attention, les paquets non officiels et issus des rétroportages (backports) sont susceptibles d'être supprimés lors de la mise à jour. Si les dépôts utilisés proposent également une version des paquets pour Squeeze, vous devriez l'utiliser (ce sera normalement fait automatiquement). Les paquets rétroportés non officiels de versions plus récentes que celles qui sont dans Debian sont celles qui risquent le plus de poser problème.

Si vous utilisiez le dépôt de rétroportages pour Lenny (lenny-backports), il vous suffit normalement de le supprimer de la liste des dépôts, et les paquets issus de ce dépôts seront remplacés par des paquets issus de Squeeze.

Si vous utilisiez le nouveau dépôt de rétroportage étendu (« lenny-backports-sloppy ») proposant des paquets plus récents que ceux proposés dans Squeeze, ces paquets risquent d'être supprimés. Vous pourrez peut-être les réinstaller à partir du dépôt squeeze-backports (rétroportage prévu pour Squeeze) s'ils existent également dans ce dépôt.

Procédure de mise à niveau

Choses à effectuer avant la mise à niveau

Sauvegardes

Comme avant toute modification conséquente d'un système, il est conseillé d'effectuer des sauvegardes. Vos données personnelles (dans /home) ne risquent a priori rien du tout, mais en cas de problème au milieu de la mise à niveau (arrêt soudain de la machine au milieu de la manipulation de la base de données de paquets installés, par exemple), il pourrait être nécessaire de réinstaller certains fichiers du systèmes pour sauver votre installation.

« Ce que vous devriez principalement sauvegarder est le contenu des répertoires /etc et /var/lib/dpkg, du fichier /var/lib/apt/extended_states et la sortie de dpkg --get-selections "*" (les guillemets sont importants). Si vous utilisez aptitude pour gérer les paquets du système, vous devriez aussi sauvegarder /var/lib/aptitude/pkgstates. »

Vous pourriez vouloir également sauvegarder vos configurations personnelles de certaines applications comme Gnome, KDE, ou les applications Mozilla (conservées dans votre répertoire personnel, dans les sous-répertoires cachés comme .gnome, .kde, .mozilla) car ces applications ont tendance à écraser certains paramètres utilisateurs existants lorsqu'une nouvelle version est lancée pour la première fois, rendant complexe un retour éventuel à une version précédente.

S'assurer qu'aptitude n'a aucune action en cours

Avant de changer les dépôts pour les faire pointer sur ceux de squeeze, vérifiez qu'aptitude n'a aucune action en cours. Démarrez aptitude en mode interactif (par la commande « aptitude » seule), et appuyez sur « g » (pour Go). Si une action est en cours, vous pouvez soit l'annuler, soit l'effectuer. Si aucune n'est prévue, aptitude vous en avertira.

Désactiver l'étiquettage apt

Si vous avez utilisé l'étiquettage APT pour installer des paquets d'une autre version de la distribution (par exemple testing), supprime-le dans /etc/apt/preferences. En particulier, le dépôts des backports pour lenny nécessitait des instructions dans ce fichier /etc/apt/preferences pour permettre la mise à jour automatique lors de l'apparition d'une nouvelle version dans les backports. Ce n'est plus le cas dans les backports pour Squeeze, qui seront mis à niveau automatiquement. Vous pouvez donc supprimez les instructions relatives aux backports dans /etc/apt/preferences.

Vérifier l'état des paquets

Il est recommandé de vérifier l'état des paquets, qui doivent tous être installés correctement avant la mise à jour (aucun ne doit être dans un état semi-installé ou semi-configuré).

Paquets dans état inconsistant

La commande suivante indiquera les paquets dans l'état « Half-Installed » ou « Failed-Config », ainsi que ceux qui sont dans un état d'erreur:

dpkg --audit

« Vous pouvez aussi vérifier l'état de tous les paquets du système en utilisant dselect, aptitude, ou avec des commandes comme :

dpkg -l | pager
# ou 
dpkg --get-selections "*" > ~/paquets-actuels.txt

Paquets bloqués

Il est souhaitable d'enlever tous les blocages de paquets (paquets dans l'état hold) avant de passer à la nouvelle version. Si un paquet essentiel pour la mise à niveau est bloqué, la mise à niveau va échouer. »

Vérifier les paquets bloqués, et les débloquer si nécessaire:

  • par aptitude:
# vérifier:
aptitude search "~ahold" | grep "^.h"
# en débloquer:
aptitude unhold <package_name> <package_name> ...
  • par apt-get:
# vérifier:
dpkg --get-selections | grep hold
# en débloquer:
echo package_name install | dpkg --set-selections

« Si vous aviez modifié et recompilé un paquet localement, sans changer son nom et sans mettre d'époque (« epoch ») dans la version, vous devez le bloquer pour éviter qu'il ne soit mis à niveau. Vous pouvez activer un blocage sur un paquet pour apt-get en utilisant :

echo package_name hold | dpkg --set-selections

Remplacez hold par install pour débloquer un paquet. »

Paquets installés automatiquement

Si la mise à jour supprime des paquets transitoires de la version précédente du système et que leurs dépendances sont marqués comme installés automatiquement, il est possible que la mise à jour pourrait supprime ces paquets installés automatiquement. Il est donc conseillé de jeter un œil sur la liste des paquets marqués comme isntallé automatiquement, et démarquer les paquets qui vous semblent importants en dehors de toute dépendance:

* afficher les paquets marqués comme « installés automatiquement par dépendance »:
aptitude search 'i~M'
* les "démarquer":
aptitude unmarkauto <paquet>

Supprimer la section proposed-updates

« Si vous avez ajouté la section proposed-updates dans le fichier /etc/apt/sources.list, il est conseillé de la supprimer avant de tenter la mise à niveau. Il s'agit essentiellement d'une précaution pour éviter des conflits possibles. »

Cette section proposed-updates peut bien sûr être remise en place après la mise à niveau si vous souhaitez disposer des mises à niveau de Debian stable plus rapidement.

Mise à niveau proprement dite

Préparer les sources d'APT

Modifiez les dépôts Debian désignés dans le fichier /etc/apt/sources.list. Vous devriez simplement à remplacer « lenny » par « squeeze », et supprimez les dépôts de rétroportage. Vous devriez obtenir quelque chose comme ceci:

deb http://ftp2.de.debian.org/debian/ squeeze main
deb http://ftp2.de.debian.org/debian/ squeeze-updates main
deb http://security.debian.org/ squeeze/updates main

La première ligne désigne le dépôt principal, la seconde permet les mises à jour régulières de données volatiles (comme les anti-virus, les fuseaux horaires, etc.; si vous ne pensez pas en avoir besoin, vous n'avez pas besoin de l'ajouter), et la troisième permet les mise à jour de sécurité.

Notez que les lignes de vos dépôts peuvent peut-être être complétée par « contrib non-free » si vous utilisez des paquets non libres.

Enregistrer la session

Lors d'une mise à jour en ligne de commande, il est recommandé d'enregistrer la session de mise à jour pour pouvoir examiner ce qu'il s'est passé en cas de problème. Vous pouvez par exemple utiliser la commande suivante avant la mise à jour:

script -t 2>~/upgrade-squeeze.time -a ~/upgrade-squeeze.script

Tapez « exit » une fois la mise à jour terminée. Vous pourrez examiner la session dans le ficheir « upgrade-squeeze.script » de votre répertoire personnel (ou plutôt de celui de root, dans /root).

Se protéger d'une éventuelle déconnexion

Si vous mettez à jour un système distant, par exemple via ssh, une coupure réseau pourrait interrompre brutalement la mise à niveau, et laisser votre système dans un état inconsistent. Pour éviter ce genre de chose, il est fortement recommandé d'utiliser un outil permettant d'éviter l'interruption de votre session sur la machine en cas de coupure réseau. L'outil idéal pour ça est screen.

Installez le paquet screen et lancez la commande du même nom avant de commencer la mise à niveau. Si vous ne connaissez cet outil, la seule chose dont vous pourriez avoir besoin de connaître sont les options -r -D qui vous permet de vous reconnecter à une session déjà existante. En cas de déconnexion, il vous suffira simplement de vous reconnecter à la machine et de lancer screen -r -D pour accéder à la session qui a été coupée, que vous retrouverez intacte.

Utilisation de screen

Quitte à utiliser screen, voici les quelques combinaisons de touches de base qui vous permettront d'utiliser quelques-unes des fonctionnalités fournies par cet excellent outil (consultez le manuel de screen(1) pour plus de détails) :

  • Ctrl-a d : détache la session actuelle. C'est à peu près le même effet qu'une coupure réseau. Vous pourrez vous reconnecter à cette session en lançant screen -r;
  • Ctrl-a c : crée une nouvelle fenêtre gérée par screen (terminez simplement le shell pour fermer la fenêtre; la fermeture de la dernière fenêtre termine screen);
  • Ctrl-a " : affiche la liste des fenêtres ouvertes dans screen. Utilisez les flèches et la touche Entrée pour en changer.

Mettre à jour la liste des paquets

À ce stade, vous pouvez mettre à jour la liste des paquets. Ceci n'installe ou ne supprime bien sûr encore aucun paquet:

apt-get update

Vérifier l'espace disque disponible

Les paquets nécessaires à l'installation seront stockés dans /var/cache/apt/archives (et dans le sous-répertoire partial/ pendant le téléchargement). La commande suivante pourra vous donner des indications sur l'espace nécessaire à la mise à jour:

apt-get -o APT::Get::Trivial-Only=true dist-upgrade

La commande affichera une liste des paquets à installer, mettre à jour, ou installer (qui n'est pas une liste définitive, notre but ici est uniquement d'avoir une idée de l'espace disque qui sera nécessaire à la mise à niveau), avec, à la fin, l'espace disque nécessaire. Par exemple:

...
XXX mis à jour, XX nouvellement installés, XX à enlever et X non mis à jour.
Il est nécessaire de prendre XXXMo/XXXMo dans les archives.
Après cette opération, XXXMo d'espace disque supplémentaires seront utilisés.
E: L'option --trivial-only a été indiquée mais il ne s'agit pas d'une opération triviale.

Si celle-ci affiche des erreurs, vous devrez peut-être effectuer une mise à jour minimale du système avant de pouvoir la lancer. Référez-vous au notes de mise à jour pour connaître les différentes méthodes pour gagner de la place avant la mise à jour .

Mise à jour les paquets

Bien que aptitude ait été l'outil recommandé lors de la mise à niveau de la version précédente de Debian, et soit toujours conseillé pour la gestion interactive des paquets, c'est cette fois apt-get qui est donnerait de meilleurs résultats: « Le programme conseillé pour la gestion interactive des paquets en console est aptitude. Pour gérer les paquets avec une interface non interactive en ligne de commande, l'utilisation d'apt-get est conseillée. apt-get est également l'outil conseillé pour mettre à niveau vers une nouvelle publication majeure. »

La commande aujourd'hui recommandée pour mettre à jour depuis Lenny est apt-get. On pourrait donc utiliser la commande apt-get dist-upgrade pour effectuer en une opération la mise à niveau de l'ensemble des paquets du système.

Cependant, les notes de mise à jour précisent que l'utilisation immédiate de cette commande pourrait amener à la suppression de certains paquets encore utiles. Il est donc recommandé d'effectuer la mise à jour en plusieurs étapes.

Mise à jour minimale du système

On commencera par une mise à jour minimale du système:

apt-get upgrade

« Cette commande met à niveau les paquets qui peuvent l'être sans entraîner l'installation ou la suppression d'autres paquets. »

Mise à jour du noyau

Il est ensuite fortement recommandé d'installer un nouveau noyau et le paquet udev, pour s'assurer de leur compatibilité mutuelle. Il faudra ensuite redémarrer le système.

Voici les explications détaillées données dans les notes de mise à niveau de l'incompatilité entre la nouvelle version de udev et du noyau fourni sous Lenny: « La version du paquet udev de Squeeze nécessite un noyau 2.6.26 ou plus récent avec l'option CONFIG_SYSFS_DEPRECATED désactivée et les options CONFIG_INOTIFY_USER et CONFIG_SIGNALFD activées. Sachant que l'option CONFIG_SYSFS_DEPRECATED est activée dans le noyau Debian standard de Lenny (version 2.6.26), et que la version d'udev fournie par Lenny n'offre pas toutes les fonctionnalités attendues par les derniers noyaux, il faut faire très attention lors de la mise à niveau pour garder le système amorçable. »

Concrètement, le démarrage du système avec le paquet udev de Squeeze pourrait poser des problèmes lors du renommage de périphériques réseau, ou de l'assignation de groupes ou de permissions additionnels à certains périphériques de bloc, et pourrait causer des dysfonctionnements difficiles à repérer.

Pour effectuer cette mise à niveau du noyau, exécutez :

apt-get install linux-image-2.6-variante

(voir les notes de mise à niveau pour déterminer la variante)

« Juste après la mise à niveau du noyau, vous devriez aussi installer le nouveau udev, afin de minimiser le risque d'incompatibilité entre le vieux udev et le nouveau noyau [8]. Vous pouvez le faire en lançant : »

apt-get install udev

Redémarrage du système

Une fois le noyau et udev mis à niveau, le système doit être redémarré pour pouvoir utiliser le nouveau noyau et la nouvelle version de udev. Redémarrez donc votre machine de la manière habituelle, ou tapez la commande reboot.

Mise à jour du reste du système

Si vous souhaitez minimiler le temps d'indisponibilité de certains services fonctionnant sur le système que vous mettez à jour, vous pouvez en forcer la mise à jour maintenant. Par exemple, si vous souhaitez que votre serveur LDAP soit indisponible un minimum de temps, lancez la commande suivante qui en forcera la mise à jour immédiate (ainsi que celle des paquets dont il dépend):

apt-get install slapd

Une fois vos éventuels services critiques mis à jour, vous pouvez maintenant continuer avec la mise à niveau principale. Exécutez :

apt-get dist-upgrade

Notez qu'il peut y avoir des cas où certains paquets ne seront pas mis à jour, comme le précise les notes de mise à niveau: « Les paquets déjà installés ayant une nouvelle version, mais qui ne peuvent être installés sans modifier l'état d'un autre paquet, seront laissés dans leur version actuelle (et affichés comme retenu — « held back »). Cela peut être résolu soit en utilisant aptitude et en choisissant d'installer ces paquets, soit en essayant apt-get -f install paquet. » Note: je ne suis pas sûr de bien comprendre cette note. Elle semble expliquer qu'un paquet nécessitant l'installation ou la mise à jour d'un autre paquet ne sera pas installé et laissé dans l'état « held back ». Je pensais pourtant que l'installation ou la mise à jour des paquets dépendants était justement rendue possible par l'utilisation de la sous-commandes « dist-upgrade » d' apt-get au lieu de « upgrade ». Quoiqu'il en soit, je n'ai pas encore rencontré de paquet retenu en « held back », ça ne doit donc pas arriver très souvent, il ne semble pas y avoir de quoi s'alarmer :) (mais si vous avez une explication, n'hésitez pas à contacter Cliss XXI, je suis preneur).

Après la mise à niveau

Terminer la mise à niveau de Grub

Une fois la commande apt-get dist-upgrade terminée, votre système est à niveau. Il vous reste cependant à terminer la mise à niveau de GRUB si vous êtes passé en version 2: si, lors de l'installation de GRUB 2, vous avez opté pour le chaînage avec la version existante de GRUB, et que vous n'avez pas eu de problème lors du redémarrage, vous pouvez terminer la migration complète vers GRUB2 en lançant la commande:

upgrade-from-grub-legacy

De beaux fond d'écrans

Le paquet desktop-base fournit les fonds d'écran officiels choisis pour Squeeze, dans le répertoire /usr/share/images/desktop-base. Ce paquet est installé automatiquement si vous utilisez une configuration de machine de bureau (avec Gnome ou KDE), sinon vous devrez l'installer manuellement à l'aide de la commande:

aptitude install desktop-base

Grub trouvera automatiquement l'image à utiliser (il s'agit de /usr/share/images/desktop-base/spacefun-grub.png) pour son fond d'écran lors de la mise à jour de sa configuration via la commande update-grub (qui est lancée à l'installation du paquet).

Mise à niveau du serveur PostgresSQL

La nouvelle version de postgresql installe un nouveau (8.4 main) cluster vide en plus de l'ancien (8.3 main). Pour finaliser la mise a jour:

  • Supprimer le nouveau cluster vide
pg_dropcluster --stop 8.4 main
  • Convertir l'ancien cluster:
pg_upgradecluster 8.3 main

Attention la syntaxe de pg_hba change:

  • Avant:
local   all         postgres                          ident admin
  • Apres:
local   all         postgres                          ident map=admin

Mise à niveau du serveur MySQL

Si le paquet mysql-server-5.0 était installé sur la machine, ce paquet aura été déinstallé sans que la version 5.1 ait été installée. Vous devrez donc en demander explicitement l'installation:

aptitude install mysql-server-5.1

Cette opération supprimera le paquet mysql-client-5.0 et installera mysql-client-5.1. Les bases de données existantes ne sont pas impactées par cette mise à jour, vous les retrouverez telles qu'elles étaient, et les bases de données interne de MySQL (utilisée pour d'authentification, etc.) seront mises à jour automatiquement.

Évolution de la configuration d'apticron

Si vous utilisez le paquet apticron qui vous permet facilement de recevoir chaque jour par mail la liste des paquets qui doivent être mis à jour sur votre système, vous devrez supprimer le fichier cron de la version précédente, qui fait maintenant doublon avec le nouveau fichier cron. Vous recevriez alors deux mails au lieu d'un. Il suffit de supprimer le fichier /etc/cron.d/apticron si vous ne l'avez pas modifié (la mise à jour ne l'a pas supprimé à cause de cette éventualité). C'est maintenant /etc/cron.daily/apticron qui lancera apticron chaque matin.

rm /etc/cron.d/apticron

Une fois ceci terminé, votre système est à niveau. Mais si vous souhaitez conserver un système Debian sain et optimal, lisez les informations ci-dessous sur les composants obsolètes et les changements importants de Squeeze.

Mise a jour web

Attention aux points suivant:

Avant:
application/x-httpd-suphp=php:/usr/bin/php-cgi
Apres:
application/x-httpd-suphp="php:/usr/bin/php-cgi"

L'absence de guillement empeche suphp de fonctionner et l'erreur n'est pas tres explicite.

Composants obsolètes

Un nombre important de fonctions seront rendues obsolètes dans les versions de Debian après Squeeze (la version 7.0 s'appellera 'Wheezy). Si vous ne savez pas ce que ces informations signifient, c'est que vous n'êtes certainement pas concernés. Dans le cas contraire, vous devriez prendre des mesures ou prévoir des mesures pour la prochaine version de Debian.

Notes importantes:

  • Debian 6.0 est la dernière version à supporter les solutions de virtualisation OpenVZ et Linux-Vserver. Les utilisateurs sont invités à migrer vers des solutions comme KVM, Linux Container ou Xen;
  • gdm3 remplacera gdm dont il est une réécriture complète. Voir les notes de mises à niveau pour des informations complètes sur les changements dans Gnome;

Voici une liste de paquets importants rendus obsolètes:

  • plone (dont la méthode d'installation recommandées est le « Unified Installer for Linux » proposé par les développeurs de plone)
  • nessus, remplacé par OpenVAS: openvas-server et openvas-client;
  • postgresql-8.3, remplacé par son successeur postgresql-8.4; la mise à niveau doit se faire manuellement (elle est généralement bien prise en charge par les scripts de mise à niveau du paquet);
  • mysql-server-5.0, remplacé par mysql-server-5.1;
  • python2.4, dont le successeur est python2.6 ;
  • Java 5, notamment sun-java5-jre et sun-java5-bin, remplacé par Java6: sun-java6-jre et paquets associés; Vous pouvez aussi opter pour openjdk (notamment fourni par openjdk-6-jre), qui est une implémentation libre de la JDK d'Oracle;
  • apt-proxy n'est plus fourni, utilisez à la place apt-cacher-ng, apt-cacher ou approx;
  • certains pilotes graphiques comme xserver-xorg-video-cyrix, xserver-xorg-video-i810 xserver-xorg-video-imstt, xserver-xorg-video-nsc, xserver-xorg-video-sunbw2, et xserver-xorg-video-vga. vous devriez utiliser xserver-xorg-video-all à la place
  • usplash, remplacé par plymouth


En outre, vous pouvez nettoyer votre système en supprimant les paquets marqués « obsolètes », qui ne seront bientôt plus supportés par Debian (généralement un an après la sortie de la version stable). La suppression de ces paquets est notamment possible grâce à la commande

apt-get autoremove

Vous pouvez aussi utiliser les paquets comme deborphan (particulièrement recommandé), debfoster, ou cruft (plus expérimental). Attention toutefois aux faux-positifs que peuvent générer ces outils: certains paquets qu'ils mentionnent pourraient encore être importants (examinez leur description pour estimer leur importance). Par exemple, la commande deborphan liste tous les paquets (par défaut uniquement des librairies, pas les logiciels) qui ne sont plus utilisés par d'autres paquets du système, et que vous devriez pouvoir supprimer sans problème.

D'autres paquets ont été renommés, et les anciens paquets sont devenus des paquets transitoires, c'est à dire que leur seule fonctionnalité est de déclencher l'installation des paquets au nouveau nom. Une fois les nouveaux paquets installés, les paquets transitoires peuvent être supprimés. Les nouveaux paquets ayant été installé par effet des dépendances, et non pas par une demande explicite de l'administrateur, il faut toutefois prendre soin de marquer ces nouveaux paquets comme nécessaires par eux-même (et non pas comme de simples dépendances des anciens paquets).

Exemple: sur un serveur, vous voudrez peut-être supprimer les paquets dhcp3-client, dhcp3-common, et dhcp3-server qui ne sont plus que des paquets transitoires car ils ont été respectivement renommés en isc-dhcp-client, isc-dhcp-common, et isc-dhcp-server. Cependant, pour éviter qu' aptitude ne propose la suppresson des nouveaux paquets lorsqu'on demandera la suppression des paquets transitoires (puisqu'ils ont été installés sur uniquement pour répondre aux dépendances de ces paquets tansitoires), il est nécessaire de les marquer comme étant des paquets installés manuellement (plutôt qu'automatiquement):

aptitude unmarkauto isc-dhcp-client isc-dhcp-common isc-dhcp-server

On peut ensuite supprimer normalement les paquets transitoires:

# aptitude purge dhcp3-client dhcp3-common dhcp3-server
Les paquets suivants seront ENLEVÉS :
  dhcp3-client{p} dhcp3-common{p} dhcp3-server{p}
0 paquets mis à jour, 0 nouvellement installés, 3 à enlever et 4 non mis à jour.
Il est nécessaire de télécharger 0 o d'archives. Après dépaquetage, 184 ko seront libérés.
Voulez-vous continuer ? [Y/n/?] Y
...

Changements importants amenés par Squeeze

Voici quelques-uns des changements importants amenés par Debian 6.0

Déconnexion lors de la mise à niveau de KDE

KDE passe de la version 3 à 4.4. Si vous mettez à jour en utilisant cette interface, vous risquez d'être déconnecté et de perdre des données. Préférez une mise à jour en ligne commande.

Changements dans Gnome

Plusieurs changements importants ont lieu pour Gnome, qui passe en 2.30:

  • en particulier, il est recommandé d'installer le paquet gdm3 après la mise à jour (des incompatibilités empêchent un remplacement automatique) car cette ancienne version de gdm ne sera bientôt plus supportée.
  • des autorisations sont maintenant données automatiquement à l'utilisateur connecté à la console.

Changement de NetworkManager

La modification la plus important sous Gnome est l'interaction entre network-manager et ifupdown: « Lors de la mise à niveau du paquet network-manager, les interfaces configurées dans /etc/network/interfaces pour utiliser DHCP sans autre option seront désactivées dans ce fichier, et à la place prises en charge par NetworkManager. Par conséquent, les commandes ifup et ifdown ne fonctionneront plus. Ces interfaces peuvent être gérées à la place avec les interfaces pour NetworkManager, voyez la documentation de NetworkManager.

Inversement, toute interface configurée dans /etc/network/interfaces avec plus d'options sera ignorée par NetworkManager. Cela s'applique en particulier aux interfaces sans fil utilisées durant l'installation de Debian (voyez le bug nº 606268). »

Gestion du branchement à chaud de périphériques de saisie

Des changements dans la gestion des branchement à chaud de périphériques de saisie ont été introduits: « Le serveur X Xorg inclus dans Debian 6.0 fournit une prise en charge améliorée pour le branchement à chaud des périphériques d'entrée (souris, claviers, tablettes, etc.). Les vieux paquets xserver-xorg-input-kbd et xserver-xorg-input-mouse ont été remplacés par xserver-xorg-input-evdev, qui nécessite un noyau avec l'option CONFIG_INPUT_EVDEV activée. En plus, quelques codes de touche (« keycode ») produits par ce pilote sont différents de ceux traditionnellement associés avec les mêmes touches. Les utilisateurs de programmes comme xmodmap et xbindkeys devront ajuster leur configuration en accord avec les nouveaux codes de touche. ».

Cela signifie que vous pouvez supprimer les paquets xserver-xorg-input-kbd et xserver-xorg-input-mouse (ainsi que xserver-xorg-input-all, s'il est installé) puisqu'ils sont remplacés par xserver-xorg-input-evdev. Attention: assurez-vous que vous avez bien installé un noyau issu de Squeeze, ou dont l'option CONFIG_INPUT_EVDEV est activée, sinon vous risquez de ne plus avoir de clavier ou de souris fonctionnels.

Arrêt du serveur X par Ctrl+Alt+Retour arrière

L'arrêt du serveur X (« zapping ») est désactivé par défaut: « Traditionnellement, la combinaison Ctrl+Alt+Retour arrière devrait tuer le serveur X. Cette combinaison n'est plus active par défaut, mais peut être réactivée en reconfigurant le paquet keyboard-configuration (pour tout le système), ou en utilisant l'application de configuration de clavier de votre environnement de bureau. »


Problèmes possibles pendant une mise à niveau

  • le noyau Linux inclus dans Squeeze ne prend plus en charge cryptoloop. Si vous utilisez cette technologie, vous devez migré vers dm-crypt avant de mettre votre système à niveau;
  • la mise à niveau vers Squeeze peut demander la suppression de paquets sur le système. Ces suppressions sont généralement noramales, mais suivez les conseils des notes de mises à jour (résumées pour la plupart dans ce document) et examinez attentivement les suppressions de paquets proposées lors de la mise à jour avant de les accepter. Certaines suppressions de paquets importants sont normales: « On peut s'attendre à la suppression de certains paquets courants comme autofs (remplacé par autofs5), dhcp3 (remplacé par isc-dhcp), madwifi-source, python-setuptools et python2.4 (remplacé par python2.6) voir aussi les mises à niveau »
  • erreurs lors de l'utilisation d'aptitude ou d'apt-get: Si une opération utilisant aptitude, apt-get ou dpkg échoue avec l'erreur suivante :
E: Dynamic MMap ran out of room
cela signifie que l'espace de cache par défaut est insuffisant. Commentez certaines lignes de /etc/apt/sources.list, ou augmenter la taille du cache, par exemple avec une commande du type
echo 'APT::Cache-Limit "12500000";' >> /etc/apt/apt.conf
  • changements des fichiers de configuration: La mise à jour vous proposera de remplacer certains fichiers de configuration localement modifiés dans les répertoires /etc/init.d ou le fichier /etc/manpath.config. Cette mise à jour doit généralement être acceptée. Les anciennes versions des fichiers remplacées seront conservés avec une extension « .dpkg-old »
  • il est recommandé d'installer un métapaquet linux-image-2.6-*, si ce n'est pas déjà fait, et de mettre à jour le noyau et redémarrer le système avant la mise à jour des autres paquets, comme indiqué plus haut;
  • réordonnancement de l'énumération des périphériques: si votre machine dispose de plusieurs cartes réseau, les périphériques correspondants (par exemple eth0, eth1, etc.) pourraient être inversés. Des règles udev existantes dans le fichier /etc/udev/rules.d/70-persistent-net.rules devraient cependant éviter ce changement inopportun;
  • le nom des périphériques de stockage pourrait également changer. Pour éviter ce changement, il est recommandé d'utiliser les noms de périphériques qui sont garantis stables, comme les alias UUID [9] dans le dossier /dev/disk/by-uuid/ ou les nom de périphériques LVM dans /dev/mapper/. Ce changement sera proposé par le processus de mise à jour, ou vous pouvez l'effectuer auparavant en suivant les instructions du paragraphe 4.7.1 des notes de mise à niveau.


Memento des opérations à effectuer

Voici un memento des opérations à effectuer, qui peut servir de guide lors de la mise à jour d'un système. Il est fortement déconseillé de suivre aveuglement ces instructions sans avoir lu auparavant le reste de de document. Certaines étapes représente un choix de Cliss XXI, qui ne sera pas forcément adapté à votre situation.

  • Empêcher si nécessaire l'installation automatique des paquets recommandés:
grep APT::Install-Recommends /etc/apt/apt.conf.d/*
puis, si nécessaire:
echo "APT::Install-Recommends \"false\";" >> /etc/apt/apt.conf.d/99local
  • Sauvegarder la base des paquets debian installés (par exemple dans /var/local/backups/system):
test -d /var/local/backups/system || mkdir -p /var/local/backups/system
rsync -avR /etc /var/lib/dpkg /var/lib/apt/extended_states /var/lib/aptitude/pkgstates /var/local/backups/system
dpkg --get-selections "*" > /var/local/backups/system/packages-$(date +%Y%m%d).selections
  • S'assurer qu'aptitude n'a aucune action en cours:
    • lancer aptitude
    • dans l'interface, tapez « g »
    • si aptitude propose des actions, les annuler ou les appliquer
    • quitter aptitude
  • Désactiver l'étiquettage APT non nécessaire: éditer /etc/apt/preferences et supprimer les étiquettages qui entrerait en conflit, en particulier ceux relatifs à squeeze, testing, à lenny-backports.
  • Vérifiez l'état des paquets et les débloquer si nécessaire:
dpkg --audit
aptitude search "~ahold" | grep "^.h"
#aptitude unhold package_name
dpkg --get-selections | grep hold
#echo package_name install | dpkg --set-selections
  • Supprimer la section proposed-updates dans le fichier /etc/apt/sources.list (à réactiver par la suite si nécessaire)
  • Changer les sources d'APT dans le fichier /etc/apt/sources.list pour quelque chose comme:
deb http://ftp.fr.debian.org/debian/ squeeze main
deb http://ftp.fr.debian.org/debian/ squeeze-updates main
deb http://security.debian.org/ squeeze/updates main
  • Enregistrez éventuellement la session:
script -t 2>~/upgrade-squeeze.time -a ~/upgrade-squeeze.script
  • Lancez screen si vous ne l'utilisez pas déjà
  • Effectuer la mise à jour des paquets:
apt-get update
  • Vérifiez l'espace disque nécessaire à la mise à jour:
apt-get -o APT::Get::Trivial-Only=true dist-upgrade
si ça ne fonctionne pas, essayer simplement la commande apt-get dist-upgrade en répondant 'n' quand apt-get demande s'il faut poursuivre, puisqu'on veut juste avoir une estimation de la place nécessaire à la mise à jour.
Comparez à la valeur donnée dans la colonne « Disp. » par la commande
df -h
observez en particulier la taille disponible dans /var (puisuque les paquets sont temporairement stockés dans /var/apt/archives).
  • Effectuer la mise à jour minimale du système:
apt-get upgrade
  • Effectuer la mise à jour du noyau et de udev:
apt-get install linux-image-2.6-686 udev
ou bien
apt-get install linux-image-2.6-amd64 udev
  • Installez GRUB2 (ça permet de le tester lors du redémarrage):
apt-get install grub-pc
  • Vérifiez bien que grub2 a installé ce qu'il fallait, et redémarrez le système:
reboot
  • Effectuer la mise à jour les services sensibles du système:
apt-get install ...
  • Effectuer la mise à jour du reste du système
apt-get dist-upgrade
  • Si le redémarrage sous Grub2 s'est bien déroulé, terminez la migration:
upgrade-from-grub-legacy
  • Nettoyez le système des paquets inutiles:
apt-get autoremove
et éventuellement à l'aide de deborphan (à utiliser avec précausion !):
aptitude install deborphan
deborphan # vérifier la liste de paquets
aptitude purge $(deborphan)
deborphan --find-config # vérifiez la liste des paquets
aptitude purge $(deborphan --find-config)
  • Pour les machines sous Gnome, passer sous gdm3:
aptitude install gdm3
  • Pour les machines sous X:
    • Suppression de xserver-xorg-input-kbd et xserver-xorg-input-mouse (remplacés par xserver-xorg-input-evdev)
aptitude purge xserver-xorg-input-kbd xserver-xorg-input-mouse
    • Suppression de xserver-xorg-input-wacom si vous n'avez pas de tablette wacom, car ce paquet génère des erreurs pas jolies au démarrage de la machine, à cause de udev (n'ayant pas de tel tablette, je supprime simplement le paquet au lieu de régler le problème ^^).
aptitude purge xserver-xorg-input-all xserver-xorg-input-wacom
  • Si le serveur MySQL était installé sur la machine, il faut effectuer explicitement l'installation de la version 5.1 (ceci mettra à jour le client MySQL). :
aptitude install mysql-server-5.1
  • Si vous utilisiez apticron, c'est maintenant /etc/cron.daily/apticron qui le lancera chaque jour, mais l'ancien fichier /etc/cron.d/apticron est devenu inutile et fera doublon:
rm /etc/cron.d/apticron
  • Profitez de votre belle Squeeze toute neuve, et du beau boulot effectué par la communauté Debian !
Outils personnels