Debian, de wheezy à jessie

Alexandre 3 ans

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 :

Shell en root

apt-get update
apt-get upgrade
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 :

Shell en root

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 :

Shell en root

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 :

Shell en root

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 :

Shell en root

apt-get autoremove
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 :

Shell en root

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

Il est maintenant nécessaire de recharger les sources :

Shell en root

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) :

Shell en root

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 :

Shell en root

apt-get dist-upgrade

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

Shell en root

apt-get clean

Fini ?

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

Shell en root

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

Bash en root

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

Commentaire

Rédiger

Quelle est la deuxième lettre du mot cwjruh ?