Suivant: Invoquer guix package
, Monter: Gestion de paquets [Table des matières][Index]
Ici, nous supposons que vous avez déjà fait vos premiers pas avec Guix voir Guide de démarrage) et que vous voulez avoir un aperçu de ce qui se passe sous le capot.
Lorsque vous utilisez Guix, chaque paquet arrive dans dépôt des
paquets, dans son propre répertoire — quelque chose comme
/gnu/store/xxx-paquet-1.2, où xxx
est une chaîne en base32.
Plutôt que de se rapporter à ces répertoires, les utilisateur·rice·s ont
leur propre profil qui pointe vers les paquets qu’ils ou elles veulent
vraiment utiliser. Ces profils sont stockés dans le répertoire personnel de
chacun·e dans $HOME/.guix-profile
.
Par exemple, alice
installe GCC 4.7.2. Il en résulte que
/home/alice/.guix-profile/bin/gcc pointe vers
/gnu/store/…-gcc-4.7.2/bin/gcc. Maintenant, sur la même
machine, bob
a déjà installé GCC 4.8.0. Le profil de bob
continue simplement de pointer vers
/gnu/store/…-gcc-4.8.0/bin/gcc — c.-à-d. les deux versions de
GCC coexistent surs le même système sans aucune interférence.
La commande guix package
est l’outil central pour gérer les
paquets (voir Invoquer guix package
). Il opère sur les profils de chaque
utilisateur·rice et peut être utilisé avec les privilèges normaux.
La commande fournit les opérations évidentes d’installation, de suppression
et de mise à jour. Chaque invocation est en fait une transaction :
soit l’opération demandée réussit, soit rien ne se passe. Ainsi, si le
processus guix package
est terminé pendant la transaction ou si
une panne de courant arrive pendant la transaction, le profil reste dans son
état précédent et reste utilisable.
In addition, any package transaction may be rolled back. So, if, for example, an upgrade installs a new version of a package that turns out to have a serious bug, users may roll back to the previous instance of their profile, which was known to work well. Similarly, the global system configuration on Guix is subject to transactional upgrades and roll-back (voir Guide de démarrage).
Tout paquet du dépôt des paquets peut être glané. Guix peut
déterminer quels paquets sont toujours référencés par les profils des
utilisateur·rice·s et supprimer ceux qui ne sont de tout évidence plus
référencés (voir Invoquer guix gc
). Les utilisateur·rice·s peuvent
toujours explicitement supprimer les anciennes générations de leur profil
pour que les paquets auxquels elles faisaient référence puissent être
glanés.
Guix prend une approche purement fonctionnelle de la gestion de paquets, telle que décrite dans l’introduction (voir Introduction). Chaque nom de répertoire de paquet dans /gnu/store contient un hash de toutes les entrées qui ont été utilisées pendant la construction de ce paquet — le compilateur, les bibliothèques, les scripts de construction, etc. Cette correspondance directe permet aux utilisateur·rice·s de s’assurer que l’installation d’un paquet donné correspond à l’état actuel de leur distribution. Elle aide aussi à maximiser la reproductibilité : grâce aux environnements de construction utilisés, une construction donnée a de forte chances de donner des fichiers identiques bit-à-bit lorsqu’elle est effectuée sur des machines différentes (voir container).
Ce fondement permet à Guix de supporter le déploiement transparent de
binaire ou source. Lorsqu’une binaire pré-construit pour une entrée de
/gnu/store est disponible depuis une source externe (un
substitut), Guix le télécharge simplement et le décompresse ; sinon,
il construit le paquet depuis les sources localement (voir Substituts).
Comme les résultats des constructions sont généralement reproductibles au
bit près, si vous n’avez pas besoin de faire confiance aux serveurs qui
fournissent les substituts : vous pouvez forcer une construction locale et
défier les fournisseurs (voir Invoquer guix challenge
).
Le contrôle de l’environnement de construction est aussi une fonctionnalité
utile pour les développeurs. La commande guix shell
permet aux
développeurs d’un paquet de mettre en place rapidement le bon environnement
de développement pour leur paquet, sans avoir à installer manuellement les
dépendances du paquet dans leur profil (voir Invoquer guix shell
).
La totalité de Guix et des définitions de paquets sont placés sous contrôle
de version, et guix pull
vous permet de « voyager dans le temps »
de l’historique de Guix lui-même (voir Invoquer guix pull
). Cela est
rend possible la réplication d’une instance Guix sur une machine différente
ou plus tard, ce qui vous permet de répliquer des environnements
logiciels complets, tout en garantissant un suivi de provenance
précis des logiciels.
Suivant: Invoquer guix package
, Monter: Gestion de paquets [Table des matières][Index]