1. Introduction

Cet article va montrer pas à pas la migration d'une Debian 4 Etch 32 bits vers une Debian 8 Jessie en 64 bits.

Normalement, vous ne devriez plus être sous Debian, cette version n'étant plus maintenue depuis le 15 février 2010. Si c'est le cas, il ne faut pas migrer directement de Debian 4 à Debian 8, mais le faire version par version :

  • migration de Debian 4 Etch vers Debian 5 Lenny ;
  • migration de Debian 5 Lenny vers Debian 6 Squeeze ;
  • migration de Debian 6 Squeeze vers Debian 7 Wheezy ;
  • migration de Debian 7 Wheezy vers Debian 8 Jessie.

Exemple : si vous êtes en Debian 6 Squeeze, il vous faudra passer d'abord par Debian 7 Wheezy, ensuite Debian 8 Jessie. Ce processus est nécessaire à la stabilité de la migration et pour ne pas casser les dépendances de paquets.

Avant de mettre à jour le système, vérifiez que celui-ci supporte la nouvelle version (en termes de processeur, mémoire, espace disque disponible). Pour le choix entre 32 bits et 64 bits, le processeur doit supporter le 64 bits, sinon il vous faut rester en version 32 bits. Un PC 64 bits peut fonctionner avec un système 32 bits. Le premier intérêt d'un système 64 bits est de pouvoir dépasser la limite de 4 Go de RAM. Les applications gagneront un peu en performance, surtout si elles sont gourmandes en mémoire.

Le processus de migration est le même, quelle que soit la version utilisée :

  1. Modification de la liste des dépôts sources où le système ira chercher les paquets ;
  2. Mise à jour.

La partie migration Debian 4 à 8 proprement dite peut être réalisée par un débutant. Par contre, la migration du 32 au 64 bits demande une bonne connaissance du système. Ce n'est pas une procédure standard. Le plus simple est de réinstaller la machine pour ce faire. Il n'est normalement pas possible de passer d'une version 32 bits à une version 64 bits sans réinstaller. Cette procédure sera vue dans le chapitre 6Migration en 64 bits.

Les tests ont été effectués depuis un environnement virtuel. Je vais vous décrire le processus de migration que j'ai utilisé.

Avant toutes mises à jour, faites une sauvegarde de vos données personnelles ! Sinon, à vos risques et périls en cas de problèmes.

2. Le contexte de départ : Debian 4 Etch

Le point de départ de ce test a été un CD d'installation Debian 4 Etch. Voici sa configuration :

  • noyau 2.6.18-6-686 ;
  • GNOME 2.14.3.

Lors de l'installation, je n'ai sélectionné aucun miroir réseau lors de la demande de celui-ci. De toute façon, aucun miroir réseau ne sera trouvé, la distribution étant obsolète (à moins de modifier le fichier /etc/apt/sources.list manuellement, ce qui est impossible à faire à ce stade). J'ai eu également un avertissement concernant le miroir de sécurité. J'ai fait une installation de base, avec l' « environnement graphique de bureau ».

J'ai ensuite installé OpenOffice et enregistré un fichier sur le bureau. J'ai installé également le client de messagerie Icedove (nom de Thunderbird sous Debian) et un compte mail paramétré afin d'avoir une configuration bureautique minimale et standard exploitable. Les tests ont été effectués avec ces logiciels, mais restent valables sur le principe pour d'autres produits.

La migration de service de type serveur est plus délicate. Bien qu'en théorie, le principe reste le même. Cette procédure doit être effectuée avec plus de prudence.

J'ai mis un fond d'écran avec une image fournie par le système.

Pour effectuer les mises à jour, je vais utiliser apt, j'aurais tout aussi bien pu utiliser aptitude, une interface pour apt, ou le gestionnaire de paquets graphiques synaptic.

2-1. Installation d'OpenOffice

Afin d'avoir une configuration minimale de test, j'ai installé OpenOffice, la version disponible dans les paquets de la version en cours : Debian 4.

Pour pouvoir le faire, j'ai d'abord mis à jour la liste des dépôts sources dans le fichier /etc/apt/sources.list.

J'ai commenté la ligne de sources correspondant au CD-ROM dans celui-ci puis ajouté la ligne :

 
Sélectionnez
deb http://archive.debian.org/debian etch main

Vous remarquerez le chemin vers archive.debian.org, la version 4 étant obsolète.

Mise à jour de la liste des paquets avec :

 
Sélectionnez
apt-get update

Installation proprement dite :

 
Sélectionnez
apt-get install openoffice.org

Ceci installera la version 2.0.

Pour avoir OpenOffice en français, il faut installer le paquet « openoffice.org-l10n-fr »

 
Sélectionnez
apt-get install openoffice.org-l10n-fr

2-2. Installation de Icedove (Thunderbird)

J'utilise ensuite le même principe pour installer Icedove.

Sous Debian, Thunderbird et Firefox se nomment Icedove et Iceweasel. Ceci à la suite d'un conflit entre Debian et Mozilla.

Par ailleurs, le profil est stocké dans le dossier « .mozilla-thunderbird » (du moins dans la version installée avec Debian 4).

Installation :

 
Sélectionnez
apt-get install icedove

Pour l'avoir en français :

 
Sélectionnez
apt-get install icedove-locale-fr

Ceci installera la version 1.5.0.

3. Migration Debian 5 (Lenny)

Je commence par modifier le fichier /etc/apt/source.list avec :

 
Sélectionnez
deb http://archive.debian.org/debian lenny main

Puis :

 
Sélectionnez
apt-get update
apt-get dist-upgrade

Les nouveaux paquets vont se télécharger puis commencer à s'installer. Comme cette mise à jour va chercher les paquets sur des serveurs, la durée va dépendre de votre débit.

J'ai ensuite eu les écrans suivants concernant le codage clavier, que j'ai laissé par défaut.

Image non disponible
Image non disponible

J'ai ensuite eu une demande de choix de dictionnaire « ispell » que j'ai également laissé par défaut.

La demande suivante a concerné la mise à jour de la libc, à laquelle j'ai répondu « oui ».

L'écran suivant m'a demandé d'arrêter certains services (qui ont été redémarrés après mise à jour des paquets concernés).

Résultat final :

  • nouveau noyau : 2.6.26-2-686 ;
  • GNOME 2.22.3 ;
  • OpenOffice 2.4 ;
  • Icedove 2.0.

4. Passage en 6 (Squeeze)

La même méthode de modification des sources que les chapitres précédentsMigration Debian 5 (Lenny) a été appliquée.

Pendant la mise à jour, j'ai eu un message indiquant l'utilisation de dash par défaut comme interpréteur de commandes.

J'ai également une boite de dialogue de l'interface graphique indiquant l'arrêt de Network Manager :

Image non disponible

J'ai ensuite eu une demande de modification de /etc/console-tools/config. J'ai laissé « N » par défaut.

Une fois la mise à jour terminée et un reboot, voici l'état des lieux.

  • Kernel 2.6.32-5-686 ;
  • OpenOffice 3 ;
  • GNOME 2.30.2 ;
  • Icedove 3.0.11 et mise à jour de l'extension automatique de Lightning en 1.0b1 (pour l'agenda) à l'ouverture ce celui-ci, la version précédente 0,99 (seule compatible avec l'ancienne version d'Icedove) n'étant pas opérationnelle : impossibilité de créer un événement.

GRUB a également été mis à jour, et reste rétrocompatible en effectuant un « chainload » entre l'ancienne et nouvelle version (consultez les passages GRUB1 et GRUB dans le lien pour plus d'informations).

Pour migrer complètement sur la nouvelle version de GRUB, il faut lancer la commande suivante comme précisé lors du boot :

 
Sélectionnez
upgrade-from-grub-legacy

La commande me demande où installer le code d'amorce :

  • /dev/sda (dans ce cas ce sera dans le MBR) ;
  • /dev/sda1 (dans ce cas se sera dans les premiers secteurs de la partition Linux).

Ceci est important dans le cas de dual-boot. S'il y a un dual-boot notamment avec Windows, il faut veiller à ne pas écraser le code amorce stocké dans le MBR.

J'ai ensuite effacé les anciens fichiers comme précisé au retour de la commande précédente dans la console :

 
Sélectionnez
rm -f /boot/grub/menu,lst*

5. Passage en Debian 7 (Wheezy)

La distribution Wheezy n'est pas en archive, j'ai modifié le sources.list en conséquence en sélectionnant ftp.fr.debian.org comme serveur.

 
Sélectionnez
deb http://ftp.fr.debian.org/debian wheezy main

Puis :

 
Sélectionnez
apt-get update
apt-get dist-upgrade

Une fois le chargement des paquets, j'ai eu une demande de sélection de gestionnaire par défaut :

Image non disponible

J'ai ensuite une demande d'arrêt automatique des services que j'ai confirmée.

J'ai eu ensuite une question sur la configuration du fichier /etc/sudoers, je garde les réglages d'origine.

Image non disponible

Pendant la mise à jour des paquets, j'ai vu l'image de fond disparaître.

Au reboot, j'ai eu droit à un fsck.

Au redémarrage de l'interface graphique, je n'avais plus mes icônes sur le bureau, pour les revoir, j'ai lancé dconf-editor (en utilisateur simple, pas en superutilisateur), puis coché la case « show-desktop-icons » dans org->gnome->desktop->background.

Image non disponible

J'ai remis ensuite une image de fond, celle d'origine n'étant plus disponible. Si j'avais mis une image personnalisée, je pense que celle-ci n'aurait pas changé.

Icedove est repassé en anglais. Problème réglé en activant le pack langage français dans l'onglet langages des modules (tools->add-on pour le menu anglais), pris en compte après redémarrage.

Bilan :

  • noyau : 3.2.0-4-686-pae ;
  • GNOME 3.4.2 (info accessible depuis paramètres systèmes ->détail en haut à droite dans le menu d'arrêt nommé par votre nom d'utilisateur) ;
  • OpenOffice remplacé par LibreOffice 3 (v3.5.4.2) ;
  • Icedove v. 31.3.0 Lightning 3.3.3.

6. Migration en 64 bits

Cette partie est la plus intéressante, mais aussi la plus délicate.

Plutôt que d'effectuer une migration de 32 vers 64 bits, je recommande de refaire une installation propre, en récupérant par exemple les fichiers de configuration /etc et les données.

Ceci est plus un « proof of concept » qu'une opération recommandée.

Je commence par nettoyer le système :

 
Sélectionnez
apt-get autoremove
apt-get install deborphan
apt-get remove $(deborphan)
apt-get autoremove

Deborphan permet de lister les paquets orphelins (c'est-à-dire les paquets ou modules qui ne sont plus requis par aucune dépendance et n'ont pas été supprimés).

6-1. Installation du noyau 64 bits

Je commence par ajouter le support de l'architecture amd64 en plus de l'architecture i386 pour la gestion des paquets et mets à jour celle-ci :

 
Sélectionnez
dpkg -add-architecture amd64
apt-get update
apt-get install linux-image-amd64:amd64

Après l'installation, je reboote et supprime les noyaux i386 pour ne garder que l'AMD64.

6-2. Bascule en 64 bits

Je commence par passer en init 1 (mode maintenance monoutilisateur), pour avoir le minimum de services en route.

 
Sélectionnez
init 1

Je lance ensuite la procédure :

Une fois celle-ci déclenchée, aucun retour en arrière possible. Le système ne pourra pas rebooter tant que la première phase n'est pas terminée. Il restera dans un état instable, difficile à récupérer même en chroot depuis un live-cd.

 
Sélectionnez
apt-get install apt:amd64

La commande va me demander de confirmer en tapant la phrase : « Yes, do as I say ! », cette commande étant dangereuse.

Cette commande va déclencher l'installation/remplacement d'une dizaine de paquets système et rendre la main.

L'étape suivante :

 
Sélectionnez
apt-get install -f

Celle-ci devra être réexécutée jusqu'à ce qu'il n'y ait plus aucun message d'erreur. Certaines erreurs nécessiteront de faire des opérations manuelles. Je vais les décrire pour le cas de ma machine.

La première passe me précise qu'elle doit récupérer 468 Mo dans les archives qui représenteront 1,4 Go d'espace occupé.

Après un certain temps, un premier blocage.

Le relancement de la commande apt-get install -f me redemande de taper la phrase de confirmation « Yes, do as I say ! ».

Cette seconde passe enlève beaucoup de paquets (dont gdm3).

ispell m'a ensuite demandé quel dictionnaire utiliser. J'ai eu une demande « abort kernel removal » à laquelle j'ai répondu « yes ».

Je continue de relancer la commande apt-get install -f jusqu'à ce qu'une erreur bloquante ne permette plus de changement.

6-3. Premier blocage

Pour cette partie, elle peut être différente selon les paquets présents sur votre installation, le principe restant le même.

J'ai eu un premier blocage avec une erreur parlant de liblapack3.

Et en sous-message :

 
Sélectionnez
/usr/share/debconf/frontend not found

J'ai compris qu'il y avait un problème avec Perl. Les systèmes Linux sont dépendants de Perl (du moins Debian), beaucoup d'utilitaires s'appuyant dessus.

Pour rattraper le coup, je l'ai téléchargé via la commande :

 
Sélectionnez
apt-get download perl

Cette commande m'a téléchargé le package nécessaire dans le dossier en cours.

Puis pour l'installer :

 
Sélectionnez
dpkg -i perl*

Il m'a fallu télécharger deux autres fichiers de dépendance :

  • perl-base ;
  • libgdbm3.

J'ai ensuite pu continuer le processus via :

 
Sélectionnez
apt-get download perl-base libgdbm3
dpkg -i *

6-4. Blocage suivant 

Le blocage suivant s'est présenté sur de multiples erreurs listant des problèmes avec :

  • gconf2 ;
  • gstreamer0.10-gconf:amd64 ;
  • libgksu2-0 ;
  • gksu ;
  • libpurple0 ;
  • totem ;
  • totem-plugins ;
  • update-manager-gnome.

J'ai effectué la commande suivante :

 
Sélectionnez
rm /var/lib/dpkg/info/gconf2*

Après ceci j'ai relancé apt-get install -f.

Plus d'erreurs retournées, la première partie est terminée.

apt-get install -f affiche un message signalant la présence de paquets inutilisés, désinstallables avec apt-get autoremove. Ne les désinstallez pas pour l'instant.

Je tente un redémarrage via la commande :

 
Sélectionnez
reboot

Celle-ci me retourne l'erreur :

 
Sélectionnez
bash : command not found

La manipulation précédente a désinstallé le paquet sysvinit et ne l'a pas réinstallé. Sans ce paquet, aucun boot possible et en cas d'arrêt, init déclenchera un « Kernel Panic ». Je le réinstalle et en profite pour réinstaller network-manager pour avoir le réseau.

 
Sélectionnez
apt-get install sysvinit network-manager

network-manager me demande en dépendance libnm-glib4 et libnm-util2, je remplace donc la commande ci-dessus par celle-ci :

 
Sélectionnez
apt-get install sysvinit network-manager libnm-glib4 libnm-util2

Le fait de travailler en environnement virtualisé m'a permis de créer un clone lié avant le reboot pour m'assurer que ça reboote bien et détruire ce clone pour revenir à la version antérieure en cas de problème.

6-5. Le reboot

Le reboot s'effectue. Par contre pas d'interface graphique. Je constate par ailleurs que l'interface de grub est passée en mode texte. Rappelez-vous, tout à l'heure je vous parlais de la suppression de gdm3. Je commence donc par :

 
Sélectionnez
apt-get install gdm3

Après reboot, j'ai l'interface graphique. Par contre, aucune icône sur le bureau. Mes applications de test LibreOffice et Icedove se lancent bien, lancées depuis le menu (qui contient beaucoup moins d'éléments), mais les éléments du menu raccourci dysfonctionnent. Une erreur s'affiche quand je clique sur ses éléments.

Image non disponible

Je tente la mise à jour des paquets GNOME étant restés en i386. Pour cela je lance la commande suivante afin d'avoir la liste des paquets à migrer :

 
Sélectionnez
dpkg -l|grep i386|grep gnome|more

J'ouvre un second terminal pour taper la commande apt-get en ayant sous les yeux les noms de paquets que je souhaite traiter.

Ne trouvant pas immédiatement le ou les paquet(s) responsable(s) de mon problème, je décide de commencer à mettre à jour les applications en interface graphique. Cela a été payant, au reboot le problème est réglé (grâce à la mise à jour des bibliothèques dont dépendent les applications mises à jour). J'ai ensuite mis à jour les bibliothèques commençant par libgnome et libg.

6-6. Mise à jour des paquets i386 restants

J'ai ensuite continué de mettre à jour les paquets en interface graphique, ne me préoccupant pas des paquets refusant de se mettre à jour.

J'ai ensuite continué par les autres paquets, du moins les paquets concernant les commandes non principales (exemple de paquets non touchés à ce stade : base-passwd, exemple de paquet traité : aptitude, cups). À ce stade, si vous avez un message de type 'Yes, do as I say ! », c'est que vous avez sélectionné un paquet essentiel au système, ce type de paquets ne doit pas être sélectionné pour le moment. Ne touchez pas aux bibliothèques (les fichiers lib…), une bonne partie sera mise à jour lors des mises à jour des applications/commandes.

Ne touchez pas les paquets dbus et findutils.

J'ai eu un blocage lors de la mise à jour de sane, système de gestion des scanners. Je l'ai résolu en supprimant les fichiers dans /etc/sane.d, puis apt-get install -f

J'ai continué ensuite avec les commandes de base (sauf dbus, findutils), puis les fichiers lib*. J'ai laissé telles quelles les bibliothèques n'ayant pas de mises à jour disponibles.

Dernières mises à jour :

Pour findutils et d-bus, j'ai effectué la démarche suivante :

 
Sélectionnez
init 1
apt-get download findutils dbus
dpkg -i *

Si vous n'avez plus d'interface graphique suite à la mise à jour de dbus, ceci sera résolu par :

 
Sélectionnez
apt-get install gdm3

Il me reste des paquets en i386, mais cela n'est pas aberrant, tous les logiciels n'étant pas forcément en 64 bits.

Un dernier nettoyage :

 
Sélectionnez
apt-get autoremove
apt-get remove $(deborphan)
apt-get autoremove

Pour moi, la migration est réussie.

7. Passage en Debian 8 (Jessie)

J'utilise la même procédure que pour les versions différentes, un nettoyage. Puis :

 
Sélectionnez
apt-get update
apt-get dist-upgrade

La procédure s'interrompt sur une erreur.

 
Sélectionnez
 /var/cache/apt/archives/libpostproc52_6%3a0.git20120821-4_amd64.deb
Error: GDBus.Error:org.freedesktop.DBus.Error.Spawn.PermissionsInvalid: The permission of the setuid helper is not correct
E: Sub-process /usr/bin/dpkg returned an error code (1)

Je la relance avec :

 
Sélectionnez
apt-get install -f

Après cette opération, plus de messages d'erreur.

J'ai par contre eu droit à un fsck au reboot.

À l'ouverture de session, j'ai une nouvelle interface comme ci-dessous :

Image non disponible

Ceci correspond à la nouvelle interface GNOME 3. Je n'ai de nouveau plus l'image de fond. En ouvrant la session en mode « Flashback », j'ai l'interface comme auparavant.

Image non disponible

Mon interface est passée en anglais, et me demandant si je devais changer le nom des dossiers par défaut tel que ci-dessous :

Image non disponible

J'ai résolu ce problème en reconfigurant les locales :

 
Sélectionnez
dpkg-reconfigure locales

J'en ai profité pour exécuter la commande apt-get upgrade, qui m'a mis à jour de nombreux paquets (conséquence probable à l'interruption du dist-upgrade précédent).

Résultat :

  • même noyau 3.2.0-4-amd64 ;
  • LibreOffice 4.3.3.2 ;
  • Icedove 31.7.0 (Lightning v. 3.3.3).

8. Tests avec KDE au lieu de GNOME

Je suis parti d'un CD Debian 4 KDE.

J'ai installé ensuite OpenOffice et Icedove pour être dans le même contexte de test qu'avec GNOME.

Pour les mises à jour, le déroulement est le même que pour GNOME (mêmes noyaux, mêmes versions d'applications - du moins pour celles utilisées pour le test).

Je suis ensuite passé en Debian Lenny. Passage difficile, erreur corrigée avec « apt-get install -f ». Au reboot, j'ai eu un message de mise à jour de configuration de KDE.

J'ai eu un souci avec Icedove, celui-ci ne démarrait pas. J'ai d'abord essayé en renommant le profil, aucun résultat. J'ai essayé de le lancer en console et j'ai eu le message suivant :

 
Sélectionnez
libimgicon.so: undefined symbol NS_GetServiceManager

En recherchant sur Internet j'ai trouvé ceci sur bug-tracker, lancer la commande avec l'option suivante :

 
Sélectionnez
LD_BIND_NOW=1 icedove

J'ai donc changé l'icône de démarrage en conséquence.

J'ai ensuite mis à niveau vers Debian 7 Wheezy.

J'ai procédé ensuite de la même façon pour le passage en 64 bits.

Après le premier reboot, pour faire repartir l'interface graphique, j'ai dû installer les paquets suivants :

  • kvm ;
  • kde-baseapps-bin ;
  • kde-window-manager ;
  • kde-workspace-bin .

9. Conclusion

Nous arrivons au terme de ce tutoriel. Les autres interfaces graphiques telles que Xfce, LXDE n'ont pas été testées, mais devraient être migrables sur le même principe. Les tests n'ont été effectués qu'avec les paquets fournis par le système. Le cas de logiciel à compiler n'a pas été testé. La régénération du Makefile, puis une compilation doit en général suffire.

9-1. Remerciements 

Je remercie LittleWhite pour sa relecture technique et son information sur l'accès au mode classique (Flashback) dans GNOME.

Je remercie Zoom61 pour sa relecture technique.

Je remercie ClaudeLeloup pour sa relecture orthographique.