• # Unless the packager works around that

    Posté par (Mastodon) . En réponse au lien Traditional Packaging is not Suitable for Modern Applications. Évalué à 10. Dernière modification le 11 septembre 2022 à 19:03.

    J'ai mis comme titre une citation du texte : « Unless the packager works around that ». Parlant de différents logiciels ayant besoin de différentes versions d'une dépendance.

    On peut donc résumer à ça :
    Dans l'enfer actuel des dépendances bordéliques de certaines applications graphiques modernes, le boulot du packager peut devenir compliqué, alors tout ce qui existait avant (le système de package traditionnel) c'est de la merde, faut gicler et utiliser flatpack (ou Nix, soyons ouverts d'esprits) !

    Bon, sinon, historiquement, avoir plusieurs versions d'une même dépendance, ça a rarement été un gros problème.
    Par exemple :
    libpng.so -> libpng16.so
    libpng14.so.14 -> libpng14.so.14.22.0
    libpng14.so.14.22.0
    libpng16.so -> libpng16.so.16.37.0
    libpng16.so.16 -> libpng16.so.16.37.0
    libpng16.so.16.37.0
    Voilà, problème résolu.
    Ou encore, les passages de qt4 à qt5 puis qt6, c'est toujours bien transparent, avec plusieurs versions installées en même temps, et chaque logiciel qui sait de laquelle il a besoin.

    J'ai quand même envie de dire : « avant » les gens qui faisaient des bibliothèques (ou dépendances, appelez ça comme vous voulez), se foulaient à essayer de faire que ça marche, et qu'on puisse avoir assez facilement en parallèle deux versions différentes lors d'une rupture assez forte de l'api/abi. Ce qui n'a pas toujours été fait de façon propre, et qui a parfois été fait de façon tellement propre qu'on en a voulu aux auteurs de faire chier avec deux versions majeures d'un outil...

    Aujourd'hui :
    * On laisse faire le gestionnaire de spaghettis, qui tire les dépendances automagiquement, sans se poser de question, et puis comme ça marche pas, on invente des systèmes pour cloisonner tout ça parce que c'est devenu le bordel.
    * Alors comme on met du bordel dans des petites boîtes, on se dit qu'un système composé de petites boîte, c'est propre et bien rangé.
    * Et on a bien caché le bordel derrière les petites boîtes.
    * Et on va considérer que la façon plus propre de faire d'« avant » c'est has-been, faut aller de l'avant et accepter d'avoir de la merde bien rangée.

    En tant que vieux con, j'aime bien la sobriété d'avant : se faire chier à inventer des systèmes de bibliothèques partagées, chargées au lancement du programme si elles n'ont pas déjà été chargée par ailleurs, partager l'espace disque, et la mémoire système aussi, pour éviter d'avoir douze fois exactement la même chose, et donc de gaspiller des ressources pour rien.
    Mais clairement ce n'est pas à la mode, et il faudrait tout conteneuriser, pour que chaque élément de notre OS embarque dans sa petite boîte l'intégralité de ses dépendances.

    Et sous prétexte que ce mode de fonctionnement permettrait d'isoler les différents outils les uns des autres, jusqu'au très bas niveau de l'OS, ça devrait améliorer la sécurité globale du système.
    Franchement, je comprends l'argument pour un serveur sur lequel n'importe qui va essayer de faire tourner n'importe quoi n'importe comment.

    Mais pour un poste de travail ?
    Parce que l'exemple c'est un conflit de nom d'exécutable sur un logiciel pas terriblement libre d'édition de code !
    Sous Slackware on a trois paquets dosbox différents, qui naturellement ont tous le même binaire dosbox.
    Et ça fonctionne très bien : dosbox est la version stable officielle, dosbox-dev la version de développement à partir des sources (ça a été très utile il y a quelques années quand la dernière version stable avait plus de 8 ans), et dosbox-x, un fork avec des fonctionnalités différentes.
    Franchement, le taf du packageur n'est pas mortel hein, renommer les binaires, ya plus complexe...

    J'ai quand même envie de lui répondre : « tu te fous de la gueule de qui ? Sérieux ? ».

    Mais en vrai, je crois qu'on ne parle pas tous de la même chose. Pas exactement en fait.
    Parce qu'il faut bien comprendre à quoi sert une distribution, pourquoi il y en a plusieurs, pourquoi il y en a autant.

    Une distribution : c'est une série de choix.
    Voilà, c'est tout.
    Une distribution ce n'est pas la possibilité de tout faire en toutes circonstances, selon tous les choix possibles et imaginable : elle fait des choix pour toi ta distribution.
    Pas tous : tu peux largement la paramétrer, comme la langue, parfois l'environnement graphique (si tu choisis kubuntu c'est pour avoir KDE par exemple, pas pour utiliser Enlightenment).
    La majorité des distribs ne te laissent pas le choix du système d'init (quel qu'il soit), ou du serveur audio. C'est pas si souvent qu'on peut basculer facilement entre X.org et Wayland, en général soit une distrib est restée sous X.org, soit elle est passée sous Wayland.
    Des choix, que des choix fait pour toi, pour te simplifier la vie.

    Un système via conteneurs type flatpak, ou mieux Nix, c'est s'affranchir de la distribution, c'est vouloir fonctionner partout en dehors de toute distribution, c'est faire des choix à la place de la distribution, et donc au final à ta place, puisque ces choix seront fait quelle que soit ta propre distribution.
    C'est une logique hégémonique et uniformisante en réalité.
    Et ça ne révolutionne strictement rien, il est toujours possible pour un logiciel d'embarquer ses propres versions de certaines bibliothèques, sans soucis, sans flatpak, le système de bibliothèque partagée a résolu ce problème depuis des décennies (cf LD_LIBRARY_PATH), et c'est un peu pour ça que des jeux proprios binaires assez vieux tournent encore, et sans flatpack ou conteneurs...

    Bref, encore un type qui chouine sur la non uniformité de l'écosystème Linux, mais sans dire directement « à quoi ça sert d'avoir autant de distrib ? ».

    • Yth, ça sert à ce que je m'en fous de ton avis, j'utilise mon PC comme je veux, et ça te regarde exactement autant que ce qu'il se passe dans mon assiette, dans ma douche, ou dans mon lit.