Debian peut mieux faire
Le hasard fait bien les choses à ce qu’on dit. Justement cette semaine j’ai eu l’occasion de trouver 3 fois Debian perfectible.
Les noyaus HWE chez Ubuntu
La particularité d’un noyau Ubuntu LTS Server est de très peu évoluer (favorisant la stabilité) avec uniquement des correctifs de sécurité apportés. L’objectif des noyaux HWE est de permettre d’assurer la prise en charge de nouvelles plates-formes et de nouveaux composants matériels nécessitant des fonctionnalités fournies par un noyau plus récent.
Concrètement Ubuntu 20.04 LTS en version Server fournit un noyau 5.4. Si j’ai besoin d’une fonctionnalité par exemple pour une carte réseau sortie récemment, comment faire ? Ubuntu propose LTS Enablement Stack (aussi appelé HWE ou Hardware Enablement) et Rolling LTS Enablement Stack.
sudo apt update && sudo apt install --install-recommends linux-generic-hwe-20.04
On passe alors à un noyau 5.8. Vous pouvez comparer les noyaux linux-generic et linux-generic-hwe-* disponibles ici.
Le graphique ci-dessous pour Ubuntu 18.04 LTS montre bien le fonctionnement et l’intérêt. Aujourd’hui le paquet linux-generic-hwe-18.04 permet d’avoir un noyau 5.4 à la place du 4.15 sur Ubuntu 18.04 LTS Server sans modifier le fichier sources.list.
Cliquez pour agrandir.
Un bon exemple et retour sur le sujet (petite coquille de sa part sudo apt install --install-recommends linux-generic-hwe-20.04
=> linux-generic-hwe-18.04).
Une nouvelle version de Debian sort « quand elle est prête » environ tous les 2 ans et demi actuellement. Un tel paquet/noyau n’existe pas chez Debian, les solutions restantes sont donc principalement la compilation d’un noyau plus récent ou plus probablement l’ajout de buster-backports dans sources.list.
Installer une version précédente d’un paquet
J’utilise Pidgin pour nos conversations via messagerie instantanée au boulot, une nouvelle version 2.14.1-1 est sortie le 04/02 pour Debian Testing. Inutilisable, connexion puis déconnexion au bout de quelques secondes.
La situation est critique, je ne peux pas échanger avec mes collègues, mon principal outil de communication est out. Je trouve rapidement que le souci vient de la mise à jour de Pidgin, le mode debug ne donne rien, des recherches sur ce bug non plus, rien ne me convient comme client XMPP alternatif, je choisis de downgrade (revenir sur la version précédente).
La mise à jour datant du 04/02, on se rend sur http://snapshot.debian.org/archive/debian/?year=2021;month=02 et on choisit une date antérieure.
sudo nano /etc/apt/sources.list.d/snapshot.list deb [check-valid-until=no] https://snapshot.debian.org/archive/debian/20210203T203559Z/ testing main contrib non-free # ou https://snapshot.debian.org/archive/debian/20210204T000000Z/ sudo nano /etc/apt/preferences.d/snapshot.pref Package: libpurple0 libpurple-bin pidgin pidgin-data Pin: origin snapshot.debian.org Pin-Priority: 1001 sudo apt update; apt policy sudo apt install pidgin=2.13.0-3 pidgin-data=2.13.0-3 libpurple0=2.13.0-3 libpurple-bin=2.13.0-3
Je vous invite à lire les explications (If there is no import at the exact time you specified you will get the latest available timestamp which is before the time you specified) et cet article.
Cette solution pour utiliser une version précédente d’un paquet est satisfaisante mais loin d’être simple et connue. La question que je me pose, pourquoi ne pas proposer dans les dépôts les paquets en version N et N-1 ? On aurait ainsi seulement à lancer sudo apt install pidgin=2.13.0-3 pidgin-data=2.13.0-3 libpurple0=2.13.0-3 libpurple-bin=2.13.0-3
. Bien que j’imagine aisément que des problèmes de dépendances se posent, leurs résolutions ne me semble pas impossible.
Régression de grub-pc sur Debian 10.8
Le problème est bien expliqué sur ce bugreport. Debian 10.8 vient avec une mise à jour de grub-pc, il est demandé à l’utilisateur de renseigner le disque où installer Grub en mode interactif.
En entreprise et au-dessus d’un certain nombre de serveurs, on applique les mises à jour en mode non-interactif. Tout le monde comprend aisément qu’il n’est pas envisageable de renseigner le disque en se connectant sur chaque serveur parmi des centaines/milliers.
Le mainteneur de grub-pc expose son point de vue : « Sacrificing noninteractivity in this case was intentional: the eventual consequences of this particular configuration being wrong can often be an unbootable system, due to the GRUB core image and modules getting out of sync. It’s better to refuse the upgrade and make people sort it out while they can do so reasonably conveniently, rather than having to rescue an unbootable system (or a fleet of such systems!) manually ». En gros il estime qu’il est plus indiqué de casser la non-interactivité pour forcer l’utilisateur à renseigner le disque car la conséquence d’un autre choix pourrait mener à un système qui ne boote pas.
Je suis plutôt d’accord avec lui, pour autant au boulot nous sommes dans la situation compliquée où il ne sera pas possible de faire la mise à jour à la mano de chaque serveur. Il est probable qu’un script avec debconf pourra résoudre le souci. Cependant et là où je donne finalement tort au mainteneur, qu’il pousse ce fonctionnement ok mais pas dans une version stable lors d’une mise à jour ET sur un paquet aussi sensible que Grub. Ce changement casse de manière trop importante le processus de mises à jour qui devrait être ennuyeux et sans aucune (mauvaise) surprise. Cette modification devrait être proposée lors de la sortie de Debian 11.
Il s’agit de mon point de vue personnel, je n’ai pas davantage raison que le mainteneur, chacun a ses arguments. Je constate que la mise à jour Debian 10.8 qui s’annonçait comme une formalité va nous demander de qualifier une solution (script) avec un risque important (serveur qui ne booterait pas). Rien d’une distribution stable pour moi.
Interroger et remettre en cause
Ces 3 sujets sont tous différents mais ont le mérite d’interroger nos usages, montrer les détails de fonctionnement autour de Debian. J’espère que l’article vous aura intéressé, l’utilisateur averti connaît ses outils et sait les remettre en cause.