Changement d’ABI, cassons les logiciels sans tester ni réparer

Une bonne news comme on les aime: https://www.archlinux.org/news/c-abi-change/. Mais qu’est-ce qu’une ABI ? Comme si c’était évident pour tout le monde. C’est Application Binary Interface.

Ok, l’interface binaire va changer mais l’ancienne est toujours fonctionnelle. Et puis le principe de l’open source est d’avoir justement le code source pour pouvoir tout recompiler en cas de besoin comme c’est le cas actuellement.

Ca tombe bien, TrueCrypt a été recompilé pour cette raison. Manque de bol, le logiciel ne fonctionne plus du tout.

C’est trop cool de mettre à jour un logiciel sans le tester. Ce n’est pas parce que ça compile que ça marche. 20 jours plus tard, problème toujours pas résolu.

Si le rapport de bug propose des solutions bizarres, le plus simple est le rollback puisque l’ancienne ABI existe toujours:

# cd /var/cache/pacman/pkg/
# pacman -U truecrypt-1:7.1a-2-x86_64.pkg.tar.xz

Ca, c’est fait.
Linux de merde. Ou plutot distrib de merde ? Ou encore Antonio Rojas (packageur) de merde ? Ou bien Rémy Oudompheng (le mainteneur, donc responsable) de merde ? « Monde de merde ». A coté, les problèmes de mises à jour de Windows 10 c’est du pipi de chat.

Publicités

Système de paquets

En faisant le tri, je découvre à la surprise générale que j’ai un dossier ~/.thumbnails/normal/ avec 11 200 fichiers pour 550 MB, à en faire crever Gwenview (qui peut donc rejoindre digikam). C’est là l’originalité de linux, on ne sait pas trop où est quoi, c’est le gros bordel avec tout dans le dossier home sous forme de fichiers cachés (berk). Cela aurait pu au moins être dans ~/.cache/thumbnails, merde! Même mieux, ~/.tmp/cache/thumbnails.

L’adoption d’un standard permet à n’importe quel administrateur (ou utilisateur d’ailleurs) de purger un dossier sans risque de perdre des données. Par exemple, le dossier ~/.tmp pourrait se vider sans problème, sans réfléchir. Encore faut-il que les développeurs sachent aller au delà de leurs complexes et cesser de penser qu’ils sont seuls au monde.

Du coup, pour connaitre quels sont les dossiers/fichiers qui prennent le plus de place, j’ai décidé d’installer KDirStat. Un magnifique logiciel qui scanne tout dossier pour ensuite afficher un beau graphique.

J’utilise l’équivalent windows au travail, un pur régal. Sur linux… ahahahaahah. Si sur windows j’avais pu utiliser exactement le même logiciel pour windows XP et windows 7, sur linux, il m’est impossible d’installer KDirStat.

Sur la page du paquet de ma distribution, il y a deux dépendances: kdelib3 et optipng. Si la seconde est facile à résoudre, la première est la plus drôle:

# pacman -S kdelibs3
erreur : impossible de trouver la cible : kdelibs3

Un commentaire récent m’indique que je ne suis pas le seul dans ce cas:

Comment by rajuk 2015-05-13 09:20
Fails to build, unable to satisfy kdelibs3 dependency.

Ouaip, magnifique système de dépendances. Ce magnifique système où un logiciel qui évolue empêche tous les autres logiciels qui n’ont pas été migré de fonctionner, ça c’est la classe.

C’est surtout le gros problème de linux, si il n’y a plus de mainteneur, le logiciel cesse d’exister.

Fuck linux ?

Une mise à jour ratée, drivers nvidia

Cela faisait longtemps que je n’avais pas eu de problème avec arch linux. Aujourd’hui, grosse mise à jour, à cause de java qui nécessitait une intervention manuelle. Par flemme d’aller voir sur leur site web, j’avais laissé trainé pendant deux semaines.

Je réalise donc la petite manipulation, et tout se met à jour comme prévu. Je redémarre le PC et là c’est le drame, mon PC reste en mode console, pas d’interface graphique. Première sensation à chaud, c’est juste la grosse déception que de nos jours on puisse en arriver là suite à une mise à jour, dans ma tête c’était un gros « Non, ce n’est pas possible, quel blagueur ce linux« . Dans le doute, je redémarre à nouveau, sait-on jamais. Pas de chance, même problème.

Cela a commencé à me faire chier, je voulais tout simplement utiliser mon PC pour faire un truc et me voilà bloqué sur un problème à la con car personne n’est capable d’assurer qu’une mise à jour ne cassera pas le système. Je me suis déjà imaginé à devoir tout réinstaller, d’ailleurs un petit backup du système sera fait bientôt.

Bref, d’expérience, c’est le paquet nvidia qui doit causer problème. Un petit coup d’oeil dans les logs:

[ 756.591] (EE) NVIDIA: Failed to initialize the NVIDIA kernel module. Please see the
[ 756.591] (EE) NVIDIA: system’s kernel log for additional error messages and
[ 756.591] (EE) NVIDIA: consult the NVIDIA README for details.
[ 756.591] (EE) No devices detected.
[ 756.591] (EE)
Fatal server error:
[ 756.591] (EE) no screens found(EE)
[ 756.591] (EE)

C’est là qu’on apprécie d’avoir pris le temps de bien configurer le mode console basique (le bon layout de clavier). Un petit downgrade de nvida avec un grand merci ma tablette pour l’aide du wiki sur comment downgrader, un petit reboot, et le problème… n’est pas résolu.

Là je me dis que c’est un peu la merde. J’ai pensé à la nouvelle version du noyau linux (3.17), mais la mise jour était mineure (3.16.3-1 -> 3.16.4-1). Au début je me suis qu’une mise à jour mineure ne peut pas virer des drivers, mais ne voyant pas d’autres solutions « faciles », ça ne coutait rien de downgrader le noyau.

Un petit reboot, et ça marche… gros WTF. Maintenant une mise à jour mineure peut faire péter un driver. J’ai envie d’accuser la distribution, mais elle utilise les paquets upstream, on peut facilement suivre ce qui a changé dans le paquet entre la 3.16.3 et la 3.16.4. Il n’y a pas grand chose à part l’URL de la nouvelle version upstream.

On pourrait presque en déduire que c’est donc l’upstream (les auteurs originaux) responsable de ce problème. Mais cela pourrait être aussi nvidia (nvidia 340.32-1 -> 340.32-2, nvidia-utils 340.32-1 -> 343.22-1, nvidia-libgl 340.32-1 -> 343.22-1).

Peu importe le coupable, c’est juste ridicule! C’est surement le revers de la médaille d’utiliser une distribution en rolling release, même si la distribution n’y est pour rien. Sur une autre distribution, le problème arrivera peut-être lors d’une mise à jour majeure quand le noyau changera. Du coup, fuck linux.

La solution temporaire est d’interdire la mise à jour des paquets linux et nvidia*… jusqu’au prochain épisode.

J’en profite pour ajouter les désagréments habituels. Pourquoi la mise à jour de bash m’a fait perdre tout mon historique ? Le fichier .bash_history de mon compte utilisateur (non root) est devenu vide… Mais celui d’autres utilisateurs n’a pas changé…

Pourquoi le fichier /usr/share/X11/xkb/symbols/fr écrase mes modifications au lieu de faire comme tous les autres fichiers en créant un fichier .pacnew.

Et aussi, putain, pourquoi formater une clé USB est si compliqué ? J’ai eu à le faire pour m’en servir pour une imprimante/scanner pour scanner un document (car hors de question de faire marcher le scanner avec linux, je n’avais pas envie de jouer à la chasse au trésor). Et merde, un clique droit dans Dolphin ne propose rien de cela. Quand on pense que Windows a ajouté enfin l’option triviale et énormément demandée de monter une image ISO en un click sans avoir à installer de logiciels tiers, et bien sur linux (KDE) il n’est même pas possible de formater facilement.

GTK 3 ? De la merde en barre

Petite mise à jour de mon système Arch Linux (début janvier 2014). Le lendemain, je lance TrueCrypt, je monte mon volume, et je double click dessus pour l’ouvrir dans mon File Manager habituel, mon cher Dolphin, le gestionnaire de fichier par défaut de KDE.

Mais c’est alors que… SURPRISE, une popup apparait pour me dire que « nautilus » n’est pas trouvé. « Nautilus » est le file manager de Gnome. Qu’est ce que ça vient foutre dans une environnement full KDE.

Après de multiple « fuck linux », je sais que ça vient de Gnome de merde et de GTK en particulier car Truecrypt utilise wxGTK (la belle erreur, très mauvaise intégration). Je décide de regarder ce qui a été mis à jour hier. Il faut savoir que pour le coup j’ai eu de la chance de m’en rendre compte rapidement, si cela avait été dans plusieurs semaines j’aurai eu beaucoup de mal à trouver l’origine du bug.

Voici donc les paquets intéressants qui ont été mis à jour:

[PACMAN] upgraded wxgtk (2.8.12.1-5 -> 3.0.0-2)
[PACMAN] upgraded truecrypt (1:7.1a-1 -> 1:7.1a-2)

J’ai commencé par regarder ce qui a changé dans le paquet truecrypt au cas où nautilus aurait été ajouté en dur dans le code (bien que cela m’aurait énormément étonné). Il n’y a rien de spécial à part les dépendances (le code n’a pas changé car « pkgver » n’a pas changé, l’incrémentation de « pkgrel » n’indique pas un changement de version du code)

Les dépendances indiquent un changement au niveau de wxgtk, et d’après la liste des paquets, wxgtk a bien été mis à jour aussi.

Je n’ai pas eu envie de chercher plus loin, je voulais juste m’assurer que les devs de truecrypt n’avaient pas fait les boulets en mettant un filemanager par défaut. Une fois avoir eu la confirmation que cela vient de GTK ou de wxGTK, je n’allais pas partir dans une croisade à la recherche de bugs.

J’ai tout simplement fait une chose horrible qui n’aurait du jamais voir le jour: j’ai créé un lien symbolique de /bin/nautilus vers /bin/dolphin… GÉNIAL.

Tous les logiciels GTK ne semblent pas capable de lancer l’application par défaut associé à un type de fichier. L’exemple le plus courant est Firefox. À noter que pour truecrypt, avant il y arrivait bien, mais ça, c’était avant.

J’avais un logiciel qui a toujours bien fonctionné (même si il était moche à cause de GTK), à un logiciel qui s’est retrouvé buggé du jour au lendemain. C’est ça linux, c’est ça GTK, du chacun pour soi.

ufw et recordmydesktop

Avant que j’oublie, voici encore un problème de paquets, c’était en mars, lors de la mise à jour du paquet ufw, les fichiers de configuration ont été déplacé (de /lib vers /usr) mais le script d’installation n’a pas prévu de les copier au nouvel endroit… Tout le monde utilisant ce paquet s’est retrouvé à devoir les copier à la main. Et pour ceux qui n’ont pas vu les avertissements lors de là mise à jour, des topics comme celui-ci ont fleuris.

On peut voir les changements ici, et s’apercevoir qu’un « cp » des anciennes configurations n’était pas compliqué à faire. C’est la faute du mainteneur bien évidemment, mais cela fait parti des petits détails qui énervent. Il a surement été blamé, mais d’autres l’ont aussi défendu en signalant que les avertissements lors de mise à jour sont à lire.

Pourquoi ce problème a été particulièrement gênant ? ufw est un pare-feu, la perte de la configuration implique que tous les ports de la machine seront fermés. Et sans accès physique à la machine, il devient impossible de se connecter dessus pour corriger le problème. Ah vraiment sympa linux, un mainteneur d’un paquet critique incapable de réfléchir à deux fois sur comment s’y prendre.

Quant à recordmydesktop, un super outil pour enregistrer son bureau et faire des démonstrations sur le comment du pourquoi linux est génial… ou pas. Programme en ligne de commande, mais disponible avec des interfaces graphiques non officielles, moi je m’en sers en ligne de commande pour maitriser toutes les options que je lui passe. Pour arrêter l’enregistrement, on peut utiliser CTRL-C, ce qui est le plus pratique pour moi puisque je retouche la vidéo ensuite. Sauf que, après CTRL-C, il y a l’étape de compression de la vidéo, rien d’anormal pour l’instant, si ce n’est que pour mettre fin à cette étape, il faut presser CTRL-C encore une fois.

Tout fonctionnait nickel jusqu’au jour où… merde, j’ai appuyé deux fois sur CTRL-C comme un con. Je recommence et je fais bien attention de n’appuyer qu’une seule fois. La fois suivante… fuck, deux fois CTRL-C et j’ai perdu une assez longue vidéo. FUCK linux, je regarde de plus prêt, et sûrement suite à une mise à jour (puisque ça ne me le faisait jamais avant) CTRL-C provoque 70% du temps deux CTRL-C (deux ^C) dans la console. GÉ-NI-AL.

Qui blamer ? xbindkeys ? xvkbd ? bash ? le clavier qui déconne ? ah bash, dernière mise à jour le 07 mai, c’est le plus récent à avoir changé. Et puis fuck, je n’ai pas envie de tester en downgradant, fait chier linux de merde, toujours des problèmes quand tout marchait très bien, au point de dire que c’est aussi recordmydesktop qui est mal foutu, un CTRL-C pour démarrer la compression, un autre pour l’arrêter (mais d’un autre coté c’est logique aussi). Bon, linux, prêt pour le desktop ? JAMAIS puisque la philosophie est Do it yourself (source, 1996) pas compatible avec Mme Michu.

Pour finir, un rapide retour sur mon optimisation de partition ext4 effectuée sur sdb, il se trouve que depuis peu, j’ai des erreurs au démarage sur sda, drole de coïncidence. Mais les disques durs étant différent, j’espère bien que c’est indépendant, mais c’est linux, on est jamais à l’abri d’un stagiairebénévole nolife.

Après plus d’un an d’utilisation de linux, je commence sérieusement à devenir un anti-linux. Sachant qu’au final, linux ne m’apporte pas grand chose de plus par rapport à Windows.

Les dépôts

Encore… j’en profite de la sortie de GIMP 2.8, voici ce que l’on peut lire sur pcinpact:

Bien que The GIMP 2.8 soit officiellement disponible, les utilisateurs de distributions Linux devront attendre que les dépôts idoines soient mis à jour. Il reste possible de le télécharger manuellement pour l’installer soi-même ensuite.

Merci de faire comprendre que les gens sous linux ne peuvent pas être à jour tout de suite, et sont ainsi des gens calmes non impulsifs. Ah mais, on peut l’installer soi-même, allons faire un tour sur la page de téléchargement

Déjà on découvre que les « devs » de GIMP sont de vrais branleurs: ils ne fournissent pas de binaire officiellement pour Windows. Mais ils ne sont pas débile non plus, ils ont heureusement un binaire de disponible. Mais ça veut dire quoi ? il n’est pas officiel donc peut-être qu’il ne faut pas avoir confiance ? Qu’il y a un trojan dedans ? D’ailleurs en général, un développeur Windows fournit au minimum un exécutable (pour sa plateforme donc), et quand son application est plus conséquente, il s’emmerde, lui, à créer l’installeur de son application.

Et bien pour linux, c’est souvent je compile pour moi et que pour moi, les autres se démerdent. GIMP est un bel exemple, mais mauvais exemple pour montrer que les dépôts sont bidons, car sa popularité va lui permettre d’être rapidement disponible dans la majorité des distributions. C’est également un bon exemple pour montrer la complexité si l’on souhaite l’installer soi-même.

Je modère toute fois mes propos, sous linux le développeur participe généralement aux dépôts de sa distribution, en particulier si elle est populaire, comme Ubuntu. Les dépôts sont bien pour centraliser les applications, comme les Store, par contre les rendre obligatoire (pour un noob qui ne sait pas compiler ou qui n’a pas installer ce qu’il faut pour), c’est stupide.