Debian, de wheezy à jessie
Rédigé par Alexandre le 2019-08-27
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
- Debian (en)
- LINUXCONFIG.org (en)
- Clapico's Blog (fr)
- Ubuntu-fr (fr)