• [^] # Re: Mal connaître sa distribution

    Posté par . En réponse à la dépêche Guix : un outil pour les remplacer tous. Évalué à 8.

    ok j'ai pas gwenview dans guix, mais voyons avec feh, une visionneuse d'images :

    ldd `which feh` | grep libpng
    libpng16.so.16 => /gnu/store/3snpwk7jl8i125bhiilvk9scqc4mnsx7-libpng-1.6.37/lib/libpng16.so.16 (0x00007f5d066f9000)
    

    effectivement, libpng n'est pas un très bon exemple puisque le nom de la bibliothèque contient le numéro de version :). En revanche, ma libpng16.so est dans un dossier à part, ce qui me permet d'avoir une version 1.6.36 (là je doute que tu puisses le faire :p). Mais cette 1.6.36 n'est pas maintenue par Guix : c'est simplement une version qui a existé dans la distribution à un moment donné.

    Contrairement aux autres distros (sauf nix) guix ne remplace jamais rien : il ajoute les nouveautés dans le dépôt, dans de nouveaux chemins (c'est à ça que sert le hash : il identifie sources + dépendances + recette) et en retire les vieilleries quand elles ne servent plus à personne. Si je mets à jour feh, guix installera une nouvelle version qui fera référence à une nouvelle version de libpng (en imaginant qu'il y a eu une mise à jour) et remplacera feh dans la nouvelle génération de mon profil.

    Si je me rends compte qu'il y a un problème avec cette nouvelle version, je fais un coup de guix roll-back et je suis revenu à la version précédent de feh, qui fonctionne (c'est pour ça qu'on ne supprime rien : ça peut toujours servir). Si ça fonctionne, je peux supprimer cette ancienne génération (guix package --delete-generation) et lancer le ramasse-miette (guix gc). Je peux aussi utiliser ça pour :

    • Avoir plusieurs profils, par exemple un par projet de développement (comme pypi le fait pour python, mais avec un outil unique pour tous les langages et capable d'installer des profils polyglottes). Chaque profil peut évoluer à son rythme, par exemple si je n'ai pas le temps de corriger un projet pour la nouvelle version de tel logiciel, je peux attendre un peu.
    • Faire une mise à jour partielle : dans mon exemple avec feh, je peux mettre à jour uniquement feh pour profiter de ses nouveautés, sans toucher à dunst qui se trouve aussi dans mon profil. Là feh utiliserait l'hypothétique 1.6.38, alors que dunst continuerait de fonctionner comme avant, avec la 1.6.37.

    Ne pas remplacer, ça donne la garanti que le logiciel se comportera toujours de la même manière, quoi qu'on fasse.