Debian, de wheezy à jessie

Rédigé par Alexandre le 2019-08-27

#debian #loisir

Je suis un peu en retard sur ce sujet, mais en entreprise, on ne peut pas se permettre de mettre à jour dès la sortie de la nouvelle version d'un logiciel, surtout lorsqu'il s'agit d'un système d'exploitation.

S'assurer que nos applications sont compatibles, vérifier qu'on a des sauvegardes viables et lorsque l'on peut, faire un snapshot : tout ceci est vital avant de faire une mise à jour sur un serveur.

Cet article n'est pas là pour vous apprendre à lire les notes de versions des mises à jour ni même à chercher sur internet les problèmes que d'autres auront rencontré, non, je vais simplement vous donner les étapes à suivre pour mettre à jour le système en lui-même.

Allez zou, on est parti !

HALTE ! Ne surtout pas partir comme ça, lire d'abord, faire ensuite ; il faut se souvenir qu'il faut se documenter avant de casser la machine, surtout quand celle-ci est en environnement de production.
Maintenant que vous êtes deux, oui, un homme averti en vaut deux, hum hum... je vais entrer directement dans le vif du sujet : mettre à niveau son système.

Être à jour

La toute première étape consiste à s'assurer qu'on est déjà bien à jour sur notre version actuelle :

sudo apt-get update
sudo apt-get upgrade
sudo apt-get dist-upgrade

Nettoyage

Après un redémarrage, je recommande vivement de faire du nettoyage dans les paquets installés.
Pour commencer ce nettoyage, on va lister les paquets "non-essentiels" déjà présents sur le système :

sudo aptitude search '~i!~M!~prequired!~pimportant!~R~prequired!~R~R~prequired!~R~pimportant!~R~R~pimportant!busybox!grub!initramfs-tools' | awk '{print $2}' > non-essentiels.txt

Le fichier non-essentiels.txt est créé, et le lire permet d'obtenir la liste des paquets ; si certains sont inutiles, les purger en utilisant apt-get purge.

Pour continuer notre session de nettoyage, il est également possible de lister les noyaux installés :

dpkg -l | grep linux-

Ce qui doit avoir pour résultat quelque chose dans ce genre :

    ii  doc-linux-fr-text                   2012.11-1                all      Linux docs in French: HOWTOs, MetaFAQs in ASCII format
    ii  firmware-linux-free                 3.2                      all      Binary firmware for various drivers in the Linux kernel
    ii  linux-base                          3.5                      all      Linux image base package
    ii  linux-headers-3.10-0.bpo.3-amd64    3.10.11-1~bpo70+1        amd64    Header files for Linux 3.10-0.bpo.3-amd64
    ii  linux-headers-3.10-0.bpo.3-common   3.10.11-1~bpo70+1        amd64    Common header files for Linux 3.10-0.bpo.3
    ii  linux-image-3.16-0.bpo.2-amd64      3.16.3-2~bpo70+1         amd64    Linux 3.16 for 64-bit PCs
    ii  linux-image-3.16-0.bpo.3-amd64      3.16.5-1~bpo70+1         amd64    Linux 3.16 for 64-bit PCs
    ii  linux-image-3.16.0-0.bpo.4-amd64    3.16.7-ckt11-1~bpo70+1   amd64    Linux 3.16 for 64-bit PCs
    ii  linux-image-amd64                   3.16+63~bpo70+1          amd64    Linux for 64-bit PCs (meta-package)
    ii  linux-kbuild-3.10                   3.10-3~bpo70+1           amd64    Kbuild infrastructure for Linux 3.10
    ii  linux-libc-dev:amd64                3.16.7-ckt11-1~bpo70+1   amd64    Linux support headers for userspace dev
    ii  util-linux-locales                  2.20.1-5.3               all      Locales files for util-linux

Le seul noyau à garder est celui avec le plus haut numéro de version, ici 3.16.0-0.bpo.4. Du coup, je supprime les autres :

sudo apt-get purge linux-headers-3.10-0.bpo.3-amd64 linux-headers-3.10-0.bpo.3-common linux-image-3.16-0.bpo.2-amd64 linux-image-3.16-0.bpo.3-amd64

Et enfin, pour finir, on nettoie les dépendances et purge réellement les paquets supprimés :

sudo apt-get autoremove
sudo aptitude purge ~c

Les sources

Suite à un redémarrage, nous voilà prêt à modifier les sources du gestionnaire de paquets.
Pour modifier facilement le fichier de sources, la commande suivante remplace tous les wheezy rencontrés par des jessie :

sudo sed -i 's/wheezy/jessie/g' /etc/apt/sources.list

Il est maintenant nécessaire de recharger les sources :

sudo apt-get update

Mettre à niveau

Petite information avant de commencer : la mise à niveau vers Jessie implique un changement de version d'Apache qui présente quelques inconvénients auxquels il faut remédier. En effet, les vhost doivent finir par .conf et certains mod n'existent tout simplement plus. Je recommande chaudement la lecture de la doc du site d'Apache et de celle de DigitalOcean sur le sujet (en anglais). Il faut bien garder à l'esprit qu'internet est une mine d'informations et qu'il est rare de tomber sur un problème que personne n'a jamais eu.

So, attaquons maintenant la mise à jour.
La commande suivante permet de mettre à jour tous les paquets qui n'ont pas de dépendances non-installées (pas de nouvelle installation donc) :

sudo apt-get upgrade

Si tout s'est bien passé, il est préférable de redémarrer avant d'effectuer la mise à jour complète :

sudo apt-get dist-upgrade

Faisons un peu de ménage dans le répertoire où sont téléchargés les paquets :

sudo apt-get clean

Fini ?

Maintenant que l'on est sur jessie, on peut s'en assurer de plusieurs façons :

sudo hostnamectl
       Static hostname: vm-test
             Icon name: computer-vm
               Chassis: vm
            Machine ID: 968c6fd4c6e98d8709a6d7515264ea57
               Boot ID: e811be0c5eb14aaaafad09fe6d5296be
        Virtualization: vmware
      Operating System: Debian GNU/Linux 8 (jessie)
                Kernel: Linux 3.16.0-4-amd64
          Architecture: x86-64

ou

cat /etc/debian_version
     8.1

Mettre à niveau rime souvent avec changement de version du noyau, je recommande donc de procéder à nouveau au nettoyage des noyaux installés.

Mots de la fin

Tout au long de l'article, je mixe les expressions mettre à jour et mettre à niveau et ce pour la simple raison que je différencie comme cela le type de mise à jour. En effet, une mise à niveau est un changement complet de version du système d'exploitation tandis qu'une mise à jour est un changement de version d'un paquet installé sur le système.
Par exemple : admettons que nous soyons sur Debian 7 (wheezy), nous mettons à niveau en passant à Debian 8 (jessie). Par contre, si nous sommes sur Ubuntu 14.04 et que nous souhaitons passer sur 14.04.1, nous procédons à une simple mise à jour.
Debian et Ubuntu permettent de comprendre cette différence via l'utilisation d'un nom pour leur système : pour Debian (wheezy, jessie, stretch, etc) et pour Ubuntu (trusty, utopic, vivid, etc).

Pour finir, même si j'ai rédigé cet article pour Debian, il est tout à fait utilisable (et a été testé) pour Ubuntu, il suffit simplement de changer les noms utilisés dans les sources.

Références