Effectuer une migration sous Debian (aptitude)

Demander un devis
Je souhaite télécharger le programme ou imprimer le programme
  • Imprimer

Introduction

 

Au même titre que les autres systèmes d'exploitation, Linux évolue constamment et les évolutions majeures se traduisent par l'apparition de nouvelles versions. Cet article présente les différentes versions de Debian et Ubuntu, deux distributions Linux.

 

Il est important de mettre à jour régulièrement son système afin de bénéficier au plus possible des correctifs de bogues, des mises à jour de sécurité. De plus, si vous ne mettez pas à jour votre système et que celui-ci devient obsolète, celui-ci risque de ne plus être maintenu. Il ne sera alors plus possible d'installer de logiciels avant de l'avoir basculé dans une version plus récente.

 

On parle de migration quand on passe un système d'une version (release) donnée vers une version plus récente.

 

Dans cet article, nous présentons comment effectuer une migration "propre" sur un système Debian. Nous allons pour cela utiliser aptitude de manière assez poussée. Dans ce qui suit nous allons préférer aptitude à apt-get. En effet, pour des migrations, aptitude s'avère plus performant et plus pratique qu'apt-get.

 

Nous présenterons cet outil dans une première partie et la migration proprement dite dans un second temps. Si vous savez déjà utiliser aptitude en mode interactif, vous pouvez ignorer la première partie.

 

La démarche présentée dans cet article peut s'appliquer sur les distributions basées sur Debian (Ubuntu, ...). Dans le cas particulier d'Ubuntu, il reste toutefois plus simple d'utiliser l'interface dédiée aux migrations. Pour plus d'informations, vous pouvez vous référer à cet article.

 

Pour aborder ce tutoriel, il est fortement recommandé :

Prise en main d'aptitude

Présentation de l'interface

 

Lorsque vous arrivez dans aptitude vous verrez une interface de ce genre :

 

aptitude

 

La fenêtre d'accueil se décompose en trois grandes zones :

  • Le bandeau supérieur (en bleu) :
    • La première ligne est en faite une barre de menus déroulants. Si vous n'avez pas de souris (par exemple parce que vous êtes en mode texte et que vous n'avez pas installé le paquet gpm), vous pouvez y accéder en appuyant sur "Ctrl t" et naviguer avec les flèches et "Echap". Les menus servent surtout tant que vous ne connaissez pas les raccourcis claviers. Parmi ces opérations on retrouve :
      • l'installation d'un paquet
      • la suppression d'un paquet
      • la mise à jour d'un paquet
      • ...
    • La ligne suivante rappelle les raccourcis claviers qui ne sont pas mentionnés dans la barre de menus.
    • À l'image d'un navigateur internet récent, aptitude utilise un système d'onglets. Ceux-ci apparaîtront dans la ligne où est actuellement écrit "aptitude"
  • La partie supérieure (noire) :
    • Il faut certes un peu d'imagination, mais c'est bien une arborescence qui est représentée. À l'image de ce que l'on trouve dans un explorateur de fichiers (comme nautilus, dolphin...), cette vue regroupe un ensemble de dossiers qui peuvent être pliés (---) ou dépliés (\--).
    • On plie / déplie un dossier en le mettant en surbrillance (à l'aide des flèches) et en appuyant sur la touche "Entrée".
    • Si vous dépliez suffisamment l'arborescence, vous finirez par arriver aux paquets. Une ligne rappelle les informations principales relatives à un paquet
      • Balises : décrit l'état dans lequel est le paquet (première lettre) et l'état dans lequel il va basculer (deuxième lettre). Typiquement, "i" signifie "install", "d" signifie "delete", "p" signifie "purge" etc...
      • Nom du paquet.
      • Version courante.
      • Version disponible (si les deux versions concordent, le paquet est à jour).
    • Il est possible de déclencher une opération (ajout, suppression, purge, mise à jour...) aussi bien sur un paquet que sur un "dossier" de paquets.
  • La partie inférieure (noire) :
    • Cette partie apporte des précisions et des informations en fonction de l'élément sélectionné dans la partie supérieure.

 

Principales opérations et convention de couleurs

 

Opérations sur les paquets :

 

Opération Balise Raccourci clavier Couleur associée Rôle
Install i + Vert Installe un paquet qui n'était pas présent jusqu'ici
Delete d - Rose Supprime le paquet mais conserve la configuration présente dans /etc
Purge p _ Rose Supprime le paquet y compris ce qui est dans /etc.
Upgrade U U Cyan Met à jour le paquet
Held h = Blanc Gèle le paquet dans une version donnée
Broken B b Rouge Le paquet est cassé car une ou plusieurs de ses dépendances sont désinstallées ou sur le point de l'être
    Entrée   Affiche les informations relatives au paquet dans un nouvel onglet, qui deviendra l'onglet courant (q pour quitter)

 

Autres

 

Opération Raccourci clavier Rôle
Go g Valide un choix
Search / Cherche un paquet (à partir d'une chaîne et plus généralement, à partir d'une expression régulière)
Quit q Quitte l'onglet courant. Si seul un onglet est ouvert, quitte aptitude
Update u indexe les dépôts référencés dans /etc/apt/sources.list

 

Purge ou delete ?

 

En général vous devriez purger un paquet si vous n'avez pas personnalisé sa configuration dans /etc.

 

Notez qu'une suppression et une purge n'altère jamais les données utilisateur, que ce soit :

  • leur profil personnel (stockées généralement dans /home).
    • Exemple : /home/mando/.vim/ stocke la configuration de l'application vim pour l'utilisateur mando
  •  les données stockées par l'application (dans /var).
    • Exemple : /var/lib/mysql stocke les bases hébergées par un serveur de base de données mysql.
Le gestionnaire de paquets ne supprime jamais de données utilisateur. C'est à un utilisateur de supprimer son profil si celui-ci est corrompu ou s'il n'en a plus besoin. En effet, prenons l'exemple de thunderbird. Le profil utilisateur thunderbird stocke les mails de cet utilisateur. Si root supprime le paquet thunderbird, cela ne doit pas déclencher en cascade la suppression des mails des utilisateurs !

 

Geler un paquet (held)

 

Vous ne devriez jamais geler un paquet, car cela risque de bloquer certaines mises à jour. En effet, supposons que vous geliez un paquet A dans une version 1.0.0 et qu'un paquet B dépende de A. Si une mise à jour de B requiert A dans une version >1.0.0.  Celle-ci ne pourra pas se faire. En cascade, le gel de la mise à jour de B risque de provoquer le gel d'autres mises à jour en cascade.

 

Ainsi, geler un paquet ne devrait se faire que si vous êtes persuadé que la nouvelle version est boguée ou incomplète par rapport à celle que vous utilisez, ce qui est exceptionnel. Ainsi, un système ne devrait idéalement comporter aucun paquet gelé.

 

Paquets cassés (broken)

 

Un système ne doit normalement comporter aucun paquet cassé, car ceux-ci sont a priori inutilisables. Ce sont des paquets dont les dépendances sont insatisfaites, soit parce que vous vous apprêtez à les désinstaller, soit parce qu'elles n'existent plus.

 

Les différentes étapes lorsqu'on utilise aptitude

 

Une opération dans aptitude se déroule en plusieurs temps. Pour passer à l'étape suivante, on appuie sur g ; pour revenir en arrière on appuie sur q.

  1. Définir un scénario : vous choisissez quels paquets doivent être installés, supprimés, mis à jour, purger etc...
  2. Valider le scénario : aptitude va alors vous proposer une nouvelle vue qui récapitule les opérations que vous allez déclencher. À vous de voir si elles vous conviennent ou non.
  3. Sabliers et sortie de dpkg : si aptitude à besoin de télécharger des paquets, vous verrez apparaître une série de barre de progression. Une fois cette opération terminée, vous verrez à l'écran les sorties de dpkg. Une fois le scénario achevé, aptitude réapparaîtra.

Que ce soit à l'étape 1 ou 2, vous pouvez naviguer dans les paquets (avec les flèches et entrée) et étudier précisément les dépendances.

Opérations courantes avec aptitude en mode interactif

Faire une mise à jour

 

Les opérations suivantes en ligne de commande déclenche une mise à jour :

 

aptitude update

aptitude safe-upgrade

 

En mode interactif, ceci revient à taper :

 

uUgg

 

Installer un paquet

 

Supposons que l'on souhaite installer le paquet "typespeed". En ligne de commande on aurait tapé :

 

aptitude install typespeed

 

En mode interactif :

 

/typespeed

+gg

 

Notez que vous pouvez marquer plusieurs paquets comme "à installer" avant de valider.

Désinstaller un paquet

 

Supposons que l'on souhaite désinstaller le paquet "typespeed". En ligne de commandes, on aurait tapé, respectivement pour une suppression ou une purge :

 

aptitude remove typespeed

aptitude purge typespeed

 

En mode interactif une suppression se fait en tapant :

 

/typespeed

-gg

 

De la même façon une purge se ferait en tapant :

 

/typespeed

_gg

 

Faire une migration

Étape 1 ; correction de /etc/apt/sources.list

 

Ouvrez le fichier /etc/apt/sources.list par exemple avec nano dans un terminal root :

 

nano /etc/apt/sources.list

 

Corrigez la version qui désigne votre version de Debian (ou d'Ubuntu).

  • Dans le cas d'Ubuntu, vous devez utiliser l'adjectif qui figure dans le nom de la version, par exemple :
    • pour la version 10.04 : lucid,
    • pour la version 10.10 : maverick,
    • pour la version 11.04 : natty,
    • ...
    • Pour voir la liste complète, vous pouvez consulter cet article.
  • Dans le cas de Debian vous pouvez utiliser soit
    • Le nom de code de la version de Debian : ceci est intéressant si vous voulez rester dans une version de Debian donnée
      • lenny,
      • squeeze,
      • wheezy,
      • sid,
      • Pour voir la liste complète, vous pouvez consulter cet article.
    • La version : lorsqu'une nouvelle version de Debian sort, votre prochaine mise à jour déclenchera une mise à jour. Utiliser ces mots clés permet d'éviter de rester par mégarde dans une version obsolète.
      • oldstable,
      • stable (actuellement lenny),
      • testing (actuellement wheezy),
      • unstable (désigne toujours sid)

Exemple :

 

deb http://ftp.fr.debian.org/debian/ testing main contrib non-free
 deb http://security.debian.org/ testing/updates main contrib non-free
 deb http://www.debian-multimedia.org testing main non-free

 

Remarque :

 

Pour un serveur on choisit généralement la version stable. Pour une machine de bureau ou pour un particulier, testing est un choix tout à fait raisonnable. Contrairement à ce que laisse penser le mot clé testing, c'est une version de Debian largement utilisable. Les personnes impliquées dans le développement du projet Debian (rapport de bogues...) et/ou à l'aise avec Debian peuvent utiliser la version unstable.

 

À la prochaine mise à jour (update), APT va indexer de nouveaux dépôts.

Étape 2 : indexer les nouveaux dépôts

 

Pour déclencher l'indexation des nouveaux dépôts, appuyer sur :

 

u

 

Concrètement aptitude va parcourir une nouvelle arborescence aux adresses référencées dans /etc/apt/sources.list. Vous pouvez d'ailleurs voir avec votre navigateur Internet qu'un miroir met à disposition une arborescence par version. Allez par exemple à cette adresse :  http://ftp.fr.debian.org/debian/dists/

 

Étape 3 : préparer le scénario de migration

 

Commencer par déclencher une mise à niveau générale :

 

U

 

Il est possible que cela casse des paquets. Dans ce cas un bandeau rouge apparaîtra au bas de l'écran.  Aptitude vous proposera d'établir automatiquement un scénario de migration "cohérent" (aucun paquets cassés) via le raccourci clavier "!", mais ce n'est généralement pas une très bonne idée. En effet, aptitude aura tendance à geler beaucoup de paquets, qu'il faudra ensuite "dégeler" par la suite...

 

La plupart des paquets cassés sont en réalité probablement des paquets obsolètes que l'on peut supprimer sans risque. Il suffit donc de les purger. Notez que déclencher la purge d'un tel paquet peut casser en cascade d'autres paquets. De plus, il est important de ne pas supprimer des paquets essentiels au système.

 

Se pose alors inévitablement la question : quels paquets puis-je purger sans risque ? Souvenez-vous que vous pouvez zoomer sur un paquet en appuyant sur entrée. Dans sa description figure son niveau d'importance. Un paquet optionnel peut être purgé sans risque, et bien entendu, purger un paquet essentiel est généralement synonyme d'une grosse erreur !

 

Voici quelques paquets essentiels qu'il ne faut pas supprimer sans quoi le système risque d'être inutilisable : libc6, libpam, perl, apt, core-utils...

 

Maintenant que vous avez ces précautions en tête, vous verrez que nettoyer les paquets cassés revient en général à taper...

 

b_b_b_b_b_  ...

 

... jusqu'à ce que le bandeau rouge au bas de l'écran disparaisse. Gardez en teête que l'objectif est d'avoir :

  • impérativement 0 paquet cassé (rouge)
  • idéalement 0 paquet gelé (blanc)

Vous pouvez également décider de sacrifier certains paquets peu essentiels le temps de la migration en les supprimant, quitte à les réinstaller une fois la migration effectuée. Pensez à les noter sur un papier ou dans un fichier ! Une fois le scénario de migration déterminé, vérifiez le récapitulatif :

 

g

 

Si certains paquets sont gelés, vous devriez placer le curseur sur le dossier correspondants (paquets maintenus dans leur version actuelle) et les mettre à jour ("U"). Ceci peut casser des paquets et vous forcer à revenir à la première étape du scénario ("q").

 

De la même façon vous pouvez purger les paquets obsolètes à quelques exceptions prêtes :

  • ne purgez pas les paquets que vous avez installé autrement que via apt et dont vous avez encore besoin (typiquement, si vous avez récupéré un paquet .deb sur un site et que celui-ci n'était pas référencé par apt, il apparaîtra dans cette rubrique) ;
  • ne purgez pas le paquet linux-image associé au noyau sur lequel vous êtes en train de travailler et que vous pouvez retrouver avec la commande "uname -r"). Par exemple si cette commande vous renvoie que vous travailler avec un noyau "2.6.39-2-amd64" et que le paquet "linux-image-2.6.39-2-amd64" est obsolète, ne le désinstallez pas avant d'avoir redémarré sur un autre noyau.

Une fois le récapitulatif correct, validez en appuyant sur :

 

g

 

Le téléchargement, les installations / mises à jour / suppressions / purges de paquets vont alors se déclencher. À terme, vous devriez arriver dans l'écran principale d'aptitude. Vérifiez que tout a bien été mis à jour :

 

Ugg

 

Si c'est le cas, vous pouvez quitter aptitude :

 

q

 

Étape 4 : faire le nettoyage

Nettoyage avec deborphan

 

Installez le paquet deborphan, puis lancez la commande :

 

deborphan

 

Si des paquets apparaissent, ceux-ci sont orphelins et peuvent être purgés sans risque.

 

aptitude purge $(deborphan)

 

Répétez l'opération jusqu'à ce que deborphan ne renvoie plus aucun paquet.

 

Purger les paquets supprimés

 

Souvenez vous qu'une purge supprime également ce qu'un paquet a installé dans /etc. Au cours de votre migration, vous avez pu supprimer des paquets au lieu de les purger (typiquement si vous n'avez pas personnalisé leur configuration dans /etc). Dans ce cas, la commande suivante déclenche la purge de ces paquets. Ne lancez cette commande que si vous êtes sûr de ce que vous faites !

 

aptitude purge $(dpkg -l | grep "^rc" | cut -d" " -f3)

 

Un autre exemple, où l'on purge tous les paquets supprimés sauf les paquets dans lesquels figure la sous-chaîne "apache2") :

 

aptitude purge $(dpkg -l | grep "^rc" | cut -d" " -f3 | grep -v "apache2")

.
X
 
 
 
 
 

You havecharacters left.