Suivant: Invoque guix graph
, Précédent: Invoquer guix lint
, Monter: Utilitaires [Table des matières][Index]
guix size
La commande guix size
aide à dresser un profil de l’utilisation de
l’espace disque par les paquets. Il est facile de négliger l’impact d’une
dépendance supplémentaire ajoutée à un paquet, ou l’impact de l’utilisation
d’une sortie unique pour un paquet qui pourrait être facilement séparé
(voir Des paquets avec plusieurs résultats). Ce sont ces problèmes que
guix size
peut typiquement mettre en valeur.
On peut passer un ou plusieurs spécifications de paquets à la commande,
comme gcc@4.8
ou guile:debug
, ou un nom de fichier dans le
dépôt. Regardez cet exemple :
$ guix size coreutils store item total self /gnu/store/…-gcc-5.5.0-lib 60.4 30.1 38.1% /gnu/store/…-glibc-2.27 30.3 28.8 36.6% /gnu/store/…-coreutils-8.28 78.9 15.0 19.0% /gnu/store/…-gmp-6.1.2 63.1 2.7 3.4% /gnu/store/…-bash-static-4.4.12 1.5 1.5 1.9% /gnu/store/…-acl-2.2.52 61.1 0.4 0.5% /gnu/store/…-attr-2.4.47 60.6 0.2 0.3% /gnu/store/…-libcap-2.25 60.5 0.2 0.2% total: 78.9 MiB
Les éléments du dépôt listés ici constituent la clôture transitive de Coreutils — c.-à-d. Coreutils et toutes ses dépendances, récursivement — comme ce qui serait renvoyé par :
$ guix gc -R /gnu/store/…-coreutils-8.23
Ici, la sortie possède trois colonnes à côté de chaque élément du dépôt. La première colonne, nommée « total », montre la taille en mébioctet (Mio) de la clôture de l’élément du dépôt — c’est-à-dire sa propre taille plus la taille de ses dépendances. La colonne suivante, nommée « lui-même », montre la taille de l’élément lui-même. La dernière colonne montre le ration de la taille de l’élément lui-même par rapport à celle de tous les éléments montrés.
Dans cet exemple, on voit que la clôture de Coreutils pèse 79 Mio, dont la plupart est dû à la libc et aux bibliothèques à l’exécution de GCC (ce n’est pas un problème en soit que la libc et les bibliothèques de GCC représentent une grande part de la clôture parce qu’elles sont toujours disponibles sur le système de toute façon).
Comme la commande accepte également les noms de fichiers de dépôt, il est facile d’évaluer la taille d’un résultat de construction :
guix size $(guix system build config.scm)
Lorsque les paquets passés à guix size
sont disponibles dans le
dépôt26, guix size
demande au démon de
déterminer ses dépendances, et mesure sa taille dans le dépôt, comme avec
du -ms --apparent-size
(voir du invocation dans GNU
Coreutils).
Lorsque les paquets donnés ne sont pas dans le dépôt, guix
size
rapporte les informations en se basant sur les substituts disponibles
(voir Substituts). Cela permet de profiler l’utilisation du disque des
éléments du dépôt même s’ils ne sont pas sur le disque, mais disponibles à
distance.
Vous pouvez aussi spécifier plusieurs noms de paquets :
$ guix size coreutils grep sed bash store item total self /gnu/store/…-coreutils-8.24 77.8 13.8 13.4% /gnu/store/…-grep-2.22 73.1 0.8 0.8% /gnu/store/…-bash-4.3.42 72.3 4.7 4.6% /gnu/store/…-readline-6.3 67.6 1.2 1.2% … total: 102.3 MiB
Dans cet exemple on voit que la combinaison des quatre paquets prend 102.3 Mio en tout, ce qui est bien moins que la somme des clôtures puisqu’ils ont beaucoup de dépendances en commun.
En regardant le profil renvoyé par guix size
, vous pouvez vous
demander pourquoi un paquet donné apparaît dans le profil. Pour le
comprendre, vous pouvez utiliser guix graph --path -t references
pour afficher le chemin le plus court entre les deux paquets
(voir Invoque guix graph
).
Les options disponibles sont :
Utilise les informations de substituts de urls.
Voir the same option for guix build
.
Trie les lignes en fonction de la clef, l’une des options suivantes :
lui-même
la taille de chaque élément (par défaut) ;
closure
la taille totale de la clôture de l’élément.
Écrit un schéma de l’utilisation du disque au format PNG dans fichier.
Pour l’exemple au-dessus, le schéma ressemble à ceci :
Cette option requiert l’installation de
Guile-Charting et
qu’il soit visible dans le chemin de recherche des modules Guile. Lorsque
ce n’est pas le cas, guix size
plante en essayant de le charger.
Considère les paquets pour système — p. ex. x86_64-linux
.
Ajoute répertoire au début du chemin de recherche de module de paquets (voir Modules de paquets).
Cela permet à des utilisateurs de définir leur propres paquets et les rendre disponibles aux outils en ligne de commande.
Plus précisément, guix size
cherche les variantes
non greffées des paquets donnés, tels qu’ils sont renvoyés par
guix build paquet --no-graft
. Voir Mises à jour de sécurité pour des
informations sur les greffes
Suivant: Invoque guix graph
, Précédent: Invoquer guix lint
, Monter: Utilitaires [Table des matières][Index]