David Madore's WebLog: Quelques misères informatiques (et une upgrade d'Ubuntu)

[Index of all entries / Index de toutes les entréesLatest entries / Dernières entréesXML (RSS 1.0) • Recent comments / Commentaires récents]

↓Entry #2203 [older| permalink|newer] / ↓Entrée #2203 [précédente| permalien|suivante] ↓

(mercredi)

Quelques misères informatiques (et une upgrade d'Ubuntu)

Je vais raconter un peu mes petits malheurs informatiques, ça ne servira à rien sauf à me défouler.

D'abord, le rant général que j'ai déjà dû répéter mille fois : les deux distributions Linux que je connais bien sont Debian et Ubuntu. Le choix entre les deux s'apparente à un choix entre Charybde et Scylla :

  • Sous Debian, on peut choisir la version stable ou la version testing/unstable (la politique officielle de Debian est que seule la stable existe, la testing/unstable — la différence est très mineure — n'étant là qu'à des fins de développement interne, et si vous l'utilisez c'est à vos risques et périls).

    • La stable marche globalement très bien, et bien maintenue question sécurité. Mais elle est déjà obsolète le jour où elle sort, et tellement archaïque le jour où la suivante sort, qu'il est essentiellement impossible d'y installer un petit sous-ensemble de packages de la distribution testing (le graphe de dépendances est tellement touffu qu'installer un seul package de la testing sur la stable vous entraîne toute la testing avec) ; il est même difficile d'y compiler des choses (comme toutes les bibliothèques de la distribution sont vieilles, on se retrouve à recompiler la moitié de l'univers, donc à recréer sa propre distribution, et du coup on perd tout bénéfice des mises à jour de sécurité). Et surtout, aucun bug n'est corrigé sauf les bugs de sécurité : donc si par malchance vous tombez sur un bug d'un programme qui le rend quasi inutilisable, vous avez le choix entre attendre des années que la stable suivante sorte, ou faire vous-même le bugfix (puisque le package où le bug est corrigé appartient à la testing et que vous ne pouvez pas l'installer ni le recompiler sans vous retrouver englué dans les dépendances), et encore, il faudra apprendre à contourner les limitations hallucinantes du système de package pour convaincre celui-ci de préférer votre version.
    • La testing ne marche pas trop mal, et a l'avantage d'être une distrib raisonnablement à jour. En contrepartie, elle demande des mises à jour à un rythme invraisemblable ; et si l'écrasante majorité de ces mises à jour se fait sans problème, de temps en temps il faut passer la journée à essayer de comprendre, par exemple, pourquoi tel package dépend de quelque chose qui n'existe pas (de temps en temps des packages disparaissent de testing parce qu'ils sont considérés comme cassés, et alors il faut les chercher dans unstable, mais il faut comprendre soi-même quel bout du graphe de dépendances aller prendre là-bas). Par ailleurs, la politique de sécurité sont douteuses (la règle de migration des packages est très stricte, donc même un package corrigeant un trou de sécurité béant devra incuber un certain temps dans unstable avant de passer dans testing, et pendant ce temps votre machine est vulnérable). Ou alors on choisit la unstable, mais ça signifie qu'on reçoit des packages absolument pas testés, et ce sont encore d'autres problèmes qui se posent.
  • Ubuntu a un rythme de mises à jour qui me semble réaliser un excellent compromis entre la Debian stable et la Debian testing : une nouvelle version de la distribution tous les six mois, dont une sur quatre est marquée comme maintenue à long terme (Long Term Support), ça donne quelque chose de raisonnablement récent avec un rythme de mises à jour supportable.

    Mais ce que je déteste avec Ubuntu, c'est que censément pour rendre leur distribution conviviale pour l'utilisateur inexpérimenté, ils imposent un nombre invraisemblable de choix douteux, rendent toute modification de configuration quasiment impossible : dès que vous sortez des clous des deux-trois cases à cocher qu'ils consentent à vous laisser, vous devrez vous battre avec des fichiers de config introuvables et non documentés et avec des démons obscurs au rôle mal spécifié — et, pire encore, à chaque changement de version, vous pouvez être sûr que tout ce que vous aurez peiné à comprendre cessera d'être vrai (voyez tout le mal que j'ai eu à faire marcher comme je voulais le touchpad de mon portable).

    Parce qu'Ubuntu souffre à un niveau délirant d'un problème déjà assez répandu dans l'informatique libre en général et dans tout ce qui gravite autour de Linux en particulier : ils n'arrêtent pas d'introduire des nouveaux mécanismes pour faire les choses, puis de décider six mois plus tard que ce mécanisme est maintenant obsolète et qu'il faut utiliser tel autre à la place. (Et du coup, quand on cherche de l'aide en ligne, il est très difficile de savoir ce qui est encore applicable ou ce qui a été remplacé par le nouveau démon qui lave plus propre.)

Il y a évidemment d'autres distributions Linux que je pourrais essayer, et sans doute certaines qui résoudraient les différents problèmes mentionnés ci-dessus, mais je suis assez persuadé qu'en contrepartie elles en introduiraient d'autres (il y a une sorte de loi cosmique de conservation des emmerdes) : j'ai donc assez peu envie de vouloir perdre mon temps à tout réapprendre pour découvrir au final que je n'aurais pas gagné grand-chose.

Toujours est-il que, n'arrivant pas à choisir entre Charybde et Scylla, j'ai opté pour les deux à la fois. Ma machine au bureau (capella.enst.fr) et mon portable (alioth) sont sous Ubuntu, tandis que mes différents serveurs (comme achernar.gro-tsen.net et spica.gro-tsen.net, et aussi les routeurs que j'ai mis chez moi et chez mes parents) sont sous Debian stable, et mon PC fixe personnel est sous Debian testing (enfin, en ce moment il est sous la stable parce qu'elle est seulement totalement obsolète et pas encore ultra-archi-paléolithique, mais ça finira sans doute par changer).

Bref, mon PC de bureau était sous Ubuntu 12.10 Quantal Quetzal, et voilà que celui-ci m'avertit que cette version ne sera plus mise à jour et qu'il est donc temps de migrer (en sautant la 13.04 Raring Ringtail et en faisant escale par la 13.10 Saucy Salamander) vers la version 14.04 Trusty Tahr (pour ceux qui n'ont pas l'habitude, les numéros de version d'Ubuntu sont simplement de la forme année.mois, et le nom de code commence par une lettre qui tourne dans l'alphabet). Voilà, me suis-je dit, une journée de perdue.

Il y a eu des problèmes que je connaissais d'avance et que j'ai donc pu contourner (par exemple le fait que la mise à jour demande énormément de place dans /var et qu'il fallait donc que je prévoie de basculer temporairement vers un disque plus gros pour cette partition). Il y en a eu d'autres que je n'aurais pas imaginé mais qui étaient fort mineurs (essentiellement le fait que le package gforth fournit un mode Emacs qui casse avec la version plus récente d'Emacs apportée par la distribution, et par la magie du système de package fait avorter toute la mise à jour : heureusement, c'était trivial de retirer ce package et de redémarrer la mise à jour). Mais bon, comme d'habitude, la mise à jour proprement dite ne s'est pas trop mal passée : ce dont j'étais sûr, et qui n'a pas manqué d'arriver, c'est que j'avais gagné le droit de perdre tous mes petits réglages et de recomprendre ce qu'Ubuntu avait déclaré être le nouveau mécanisme de l'avenir.

Première constatation : je ne peux pas me logguer — si je tape mon mot de passe dans le gestionnaire graphique, je suis immédiatement renvoyé au point de départ. Un compte vierge fonctionne parfaitement, mais, justement, je n'ai pas envie de repartir d'un compte vierge. Je vous épargne les explications sur le mal que j'ai eu à comprendre ce qui se passait : le fin mot de l'histoire est que j'avais configuré mon PATH pour ne pas contenir les répertoires système /sbin et /usr/sbin (qui, dans la tradition Unix, sont censés être réservés aux binaires uniquement utiles à l'administrateur) alors que maintenant Ubuntu base tout son mécanisme de démarrage sur le démon Upstart (documenté ici — au moins, là, ils ont fait des efforts), appelé init parce qu'il sert aussi d'init du système, et ils l'appellent simplement init, pas /sbin/init, donc les scripts de démarrage de session ne le trouvaient pas. Bon, au passage, j'ai appris énormément de choses sur la manière dont une session démarre, ce qui est toujours bon à savoir (malheureusement tout sera probablement faux dans la version suivante quand ils auront décidé que leur Upstart tout neuf, finalement, ce n'est pas si bien que ça et qu'on va utiliser autre chose à la place, je sens bien le coup) ; après coup, j'ai vu que tout était fort bien expliqué ici (voilà exactement le genre de docs qui devraient être régulièrement maintenues, et placées à un endroit plus trouvable qu'un thread aléatoire de AskUbuntu). Bon, j'ai mis des liens symboliques vers certains programmes de /sbin dans un répertoire ad hoc mon PATH et j'ai pu me logguer.

Ensuite, évidemment, toute ma petite config clavier avait cassé. Alors oui, je sais que je suis casse-pied, mais il y a essentiellement un truc que je veux absolument pouvoir configurer finement sur mon système, c'est le réglage de mon clavier (et, sur mon portable, de mon touchpad). Je tiens notamment à ce que la touche marquée d'un symbole Windows à gauche de la barre d'espace (immédiatement à droite du Control de gauche) soit une touche Alt (et qu'elle me serve à configurer mes racourcis clavier liés au déplacement des fenêtres et les choses comme ça) et que la touche marquée Alt soit une touche Meta (et que ce soit celle-là qui serve à ouvrir des menus dans une application donnée, et bien sûr, serve de touche Meta sous Emacs) : je sais, c'est un peu tordu, mais c'est comme ça sur les claviers Sun, et je tiens vraiment à cette config — ça ne devrait quand même pas être la mort. Le souci c'est que Gnome, Ubuntu, et essentiellement tout le monde, a décidé de faire les choses autrement, donc des hypothèses contraires à mes choix sont faits à peu près à tous les niveaux, et il faut vraiment que je me batte pour avoir mes touches Alt et Meta comme je les veux. Rien que d'obtenir de charger une configuration clavier personnelle (je veux dire, vraiment personnelle, pas juste choisir si on veut un layout QWERTY ou AZERTY avec quelques options en plus ou en moins), sous Ubuntu, c'est la croix et la bannière : en principe il devrait suffire de lancer une commande du genre xkbcomp $HOME/.xkb/toplevel.xkm $DISPLAY au démarrage (si .xkb contient la config clavier personnelle compilée), sauf que (1) trouver où mettre une telle commande pour qu'elle soit lancée n'est déjà pas évident, et (2) même si on arrive à la faire exécuter, tout truc comme Gnome et Unity va faire tourner un million de démons qui décident aléatoirement oh, voyons ce que l'utilisateur veut utiliser comme type de clavier et installons-lui ce layout et donc effacent la configuration clavier qu'on a pu réussir à installer ; pire, Ubuntu a décidé de lancer automatiquement un serveur d'input methods qui ajoute une surcouche de complexité à toute l'histoire et qui, d'ailleurs, capturait le racouri Control-Espace absolument essentiel à Emacs (est-ce qu'Ubuntu a décidé qu'on n'avait plus le droit d'utiliser Emacs ? je l'ignore — on peut évidemment changer le racourci, mais de nouveau, encore faut-il comprendre comment tout ceci s'agence). Et même une fois que j'arrive à faire avaler au système ma configuration clavier personnelle, encore faut-il réussir à lui faire accepter que j'aie des racourcis clavier avec une touche Alt qui n'est pas la touche que lui a envie d'appeler Alt (à savoir Mod1 — c'est terriblement compliqué parce que les touches ont à la fois un keysym et un modificateur associé) : il faut lui faire accepter des racourcis clavier avec Alt-sous-le-nom-de-Mod2, ce que je n'ai réussi à faire qu'en allant taper directement dans la configuration de Gnome (qui s'appelait gconf jusqu'au jour où ils ont décidé que l'avenir, finalement, c'était dconf). À chaque version d'Ubuntu je dois me battre pour avoir mon clavier comme je veux.

Ce coup-ci j'ai dû laisser tomber. Le démon qui servait à gérer les racourcis clavier (un plugin du gnome-settings-daemon) a muté en deux descendants, un unity-settings-daemon et un ayant gardé le nom gnome-settings-daemon, je n'ai pas réussi à savoir lequel je devais utiliser et je n'ai pas réussi à faire avaler mes racourcis ni à l'un ni à l'autre. Alors j'ai jeté Gnome, Unity et compagnie par la fenêtre, j'ai jeté un coup d'œil rapide à Xfce, j'ai découvert qu'il était encore moins configurable, et j'ai fini par revenir à Fvwm comme je l'utilise sur ma machine personnelle. Au moins, Fvwm, j'arrive à lui faire comprendre exactement ce que je veux comme racourcis clavier, si je lui dis de prendre Mod2 pour les racourcis, il accepte ça et il ne fait pas de chichis à vouloir savoir mieux que moi si la touche doit s'appeler Alt ou autre chose.

Mais je ne suis pas content du tout. Parfois j'aime bien avoir une interface graphique un peu conviviale. Et il y a beaucoup de choses qui ont besoin, sinon de Gnome, d'au moins certains bouts de Gnome, pour fonctionner : par exemple, j'aime bien avoir une petite icône dans la barre en haut de mon écran qui m'affiche le temps qu'il fait — et je ne sais pas faire tourner ce gnome-weather sans Gnome. (De fait, j'ai bien réussi à lancer gnome-panel dans Fvwm, mais ma petite applet gnome-weather, je n'arrive décidément pas à la faire tourner.) Il n'est pas normal que j'aie seulement le choix entre Fvwm qui est complètement configurable mais où je dois tout faire à la main et je ne peux rien utiliser de Gnome, ou bien prendre tout Gnome (ou Unity, ou n'importe quoi du genre — la différence m'importe assez peu) mais devoir alors renoncer à toute configuration un peu avancée du clavier ! En abrégé : il n'est pas normal que j'aie à choisir entre l'affichage convivial de la météo et la configuration fine de mon clavier.

Je donne souvent l'exemple de Firefox pour montrer qu'un programme peut parfaitement réussir à être à la fois très hautement configurable (il suffit de regarder le nombre de paramètres réglables dans le about:config de Firefox pour s'en convaincre — et même si ça ne suffit pas, on peut écrire des extensions personnelles, et en plus, elles ne cassent pas tous les six mois) et très puissant et convivial pour l'utilisateur non expérimenté. Et en plus, abondamment documenté. Il n'y a aucune raison que Gnome et compagnie ne puissent pas suivre un modèle analogue.

Mais mes malheurs ne se sont pas arrêtés là. Prévoyant que je peinerais à retrouver une configuration vaguement utilisable sur ma machine de bureau, j'avais apporté au bureau mon portable (pas encore mis à jour) pour pouvoir quand même travailler même pendant que la machine fixe mouline à faire la mise à jour ou simplement pendant que j'en ai marre de toutes ces conneries. Seulement, j'ai constaté que le chargeur de mon portable ne chargeait plus (il doit y avoir un mauvais contact dedans, parce qu'il se remet parfois à marcher quelques secondes, mais c'est tout) : ce n'est pas surprenant, c'est une camelote chinoise achetée en remplacement de la moins-camelote chinoise d'origine qui venait avec le portable mais qui est sur prise anglaise vu que j'ai acheté le portable à Londres histoire d'avoir un clavier QWERTY — et les prises anglaises, c'est vraiment énorme à cause de toutes leurs histoires de fusibles obligatoires.

Fatigué, je suis retourné retrouver mon PC à la maison, et là celui-ci a décidé de perdre un disque dur (ça lui arrive de temps en temps — heureusement assez rarement — de perdre totalement la connexion avec un des disques SATA : je pense que c'est le chipset de la carte mère qui est moisi, mais je manque de ports SATA donc il faut que je consente à en utiliser un moisi). Comme mes disques sont totalement en RAID, et que de toute façon les disques ne sont pas défectueux (c'est la connexion qui l'est), je n'ai pas perdu de données, mais j'ai quand même perdu un temps invraisemblable à redémarrer la machine qui était dans un état très bizarre (quand on débranche un chaud un disque dur d'une machine qui tourne, elle n'aime souvent pas trop ça), puis à resynchroniser correctement les tableaux RAID.

Je finis par une petite anecdote qui cette fois-ci concerne un collègue : il a voulu modifier un fichier bashrc et a choisi, pour ça, de l'éditer avec un éditeur graphique interactif quelconque (je ne sais pas ce qu'Unity ou Gnome ouvrent quand on double-clique sur un fichier texte, mais c'est sans doute ça). Or cet éditeur a cru bon d'ajouter un byte-order mark au début du fichier (le caractère Unicode U+FEFF ZERO WIDTH NO-BREAK SPACE, qui est censé être ignoré et ne servir à rien sauf à permettre de détecter l'encodage, en l'occurrence enregistré en UTF-8 sous la forme des octets 0xef 0xbb 0xbf). Résultat : l'insertion de ce caractère invisible et quasiment indétectable faisait que le shell ne comprenait plus le fichier en question. Je ne sais pas bien qui a tort dans l'histoire (je suis tenté de dire les deux : l'éditeur ne devrait pas ajouter de byte-order mark sans raison, et surtout pas dans un fichier de type shell, il devrait savoir ça ; et le shell devrait être robuste à cette situation qui est tout de même bien connue), mais en tout cas, comme on aime dire quand on croise de telles singeries, il y a des bananes qui se perdent.

↑Entry #2203 [older| permalink|newer] / ↑Entrée #2203 [précédente| permalien|suivante] ↑

[Index of all entries / Index de toutes les entréesLatest entries / Dernières entréesXML (RSS 1.0) • Recent comments / Commentaires récents]