Suivant: Invoquer guix pull
, Précédent: Invoking guix locate
, Monter: Gestion de paquets [Table des matières][Index]
guix gc
Les paquets qui sont installés mais pas utilisés peuvent être glanés.
La commande guix gc
permet aux utilisateurs de lancer
explicitement le ramasse-miettes pour récupérer de l’espace dans le
répertoire /gnu/store. C’est la seule manière de supprimer
des fichiers de /gnu/store — supprimer des fichiers ou des
répertoires à la main peut le casser de manière impossible à réparer !
Le ramasse-miettes a un ensemble de racines connues : tout fichier
dans /gnu/store atteignable depuis une racine est considéré comme
utilisé et ne peut pas être supprimé ; tous les autres fichiers sont
considérés comme inutilisés et peuvent être supprimés. L’ensemble des
racines du ramasse-miettes (ou « racines du GC » pour faire court) inclue
les profils par défaut des utilisateurs ; par défaut les liens symboliques
sous /var/guix/gcroots représentent ces racines du GC. De nouvelles
racines du GC peuvent être ajoutées avec la guix build -- root
par
exemple (voir Invoquer guix build
). La commande guix gc
--list-roots
permet de les lister.
Avant de lancer guix gc --collect-garbage
pour faire de la place,
c’est souvent utile de supprimer les anciennes génération des profils
utilisateurs ; de cette façon les anciennes constructions de paquets
référencées par ces générations peuvent être glanées. Cela se fait en
lançant guix package --delete-generations
(voir Invoquer guix package
).
Nous recommandons de lancer le ramasse-miettes régulièrement ou lorsque vous avez besoin d’espace disque. Par exemple pour garantir qu’au moins 5 Go d’espace reste libre sur votre disque, lancez simplement :
guix gc -F 5G
Il est parfaitement possible de le lancer comme une tâche périodique
non-interactive (voir Exécution de tâches planifiées pour apprendre comment
paramétrer une telle tâche). Lancer guix gc
sans argument
ramassera autant de miettes que possible mais ça n’est pas le plus pratique
: vous pourriez vous retrouver à reconstruire ou re-télécharger des
logiciels « inutilisés » du point de vu du GC mais qui sont nécessaires pour
construire d’autres logiciels — p. ex. la chaîne de compilation.
La commande guix gc
a trois modes d’opération : elle peut être
utilisée pour glaner des fichiers inutilisés (par défaut), pour supprimer
des fichiers spécifiques (l’option --delete), pour afficher des
informations sur le ramasse-miettes ou pour des requêtes plus avancées. Les
options du ramasse-miettes sont :
--collect-garbage[=min]
-C [min]
Ramasse les miettes — c.-à-d. les fichiers inaccessibles de /gnu/store et ses sous-répertoires. C’est l’opération par défaut lorsqu’aucune option n’est spécifiée.
Lorsque min est donné, s’arrêter une fois que min octets ont été
collectés. min peut être un nombre d’octets ou inclure un suffixe
d’unité, comme MiB
pour mébioctet et GB
pour gigaoctet
(voir size specifications dans GNU Coreutils).
Lorsque min est omis, tout glaner.
--free-space=libre
-F libre
Glaner jusqu’à ce que libre espace soit disponible dans
/gnu/store si possible ; libre est une quantité de stockage
comme 500MiB
comme décrit ci-dessus.
Lorsque libre ou plus est disponible dans /gnu/store ne rien faire et s’arrêter immédiatement.
--delete-generations[=durée]
-d [durée]
Avant de commencer le glanage, supprimer toutes les générations plus vielles que durée, pour tous les profils utilisateurs et générations de l’environnement personnel ; lorsque cela est lancé en root, cela s’applique à tous les profils de tous les utilisateurs.
Par exemple, cette commande supprime toutes les générations de tous vos profils plus vieilles que 2 mois (sauf s’il s’agit de la génération actuelle) puis libère de l’espace jusqu’à atteindre au moins 10 Go d’espace libre :
guix gc -d 2m -F 10G
--delete
-D
Essayer de supprimer tous les fichiers et les répertoires du dépôt spécifiés en argument. Cela échoue si certains des fichiers ne sont pas dans le dépôt ou s’ils sont toujours utilisés.
--list-failures
Lister les éléments du dépôt qui correspondent à des échecs de construction.
Cela n’affiche rien à moins que le démon n’ait été démarré avec --cache-failures (voir --cache-failures).
--list-roots
Lister les racines du GC appartenant à l’utilisateur ; lorsque la commande est lancée en root, lister toutes les racines du GC.
--list-busy
Liste des éléments de stockage utilisés par les processus en cours d’exécution. Ces éléments de stockage sont effectivement considérés comme des racines GC : ils ne peuvent pas être supprimés.
--clear-failures
Supprimer les éléments du dépôt spécifiés du cache des constructions échouées.
De nouveau, cette option ne fait de sens que lorsque le démon est démarré avec --cache-failures. Autrement elle ne fait rien.
--list-dead
Montrer la liste des fichiers et des répertoires inutilisés encore présents dans le dépôt — c.-à-d. les fichiers et les répertoires qui ne sont plus atteignables par aucune racine.
--list-live
Montrer la liste des fichiers et des répertoires du dépôt utilisés.
En plus, les références entre les fichiers existants du dépôt peuvent être demandés :
--references
¶--referrers
Lister les références (respectivement les référents) des fichiers du dépôt en argument.
--requisites
¶-R
Lister les prérequis des fichiers du dépôt passés en argument. Les prérequis sont le fichier du dépôt lui-même, leur références et les références de ces références, récursivement. En d’autre termes, la liste retournée est la closure transitive des fichiers du dépôt.
Voir Invoquer guix size
pour un outil pour surveiller la taille de la
closure d’un élément. Voir Invoque guix graph
pour un outil pour
visualiser le graphe des références.
--derivers
¶Renvoie les dérivations menant aux éléments du dépôt donnés (voir Dérivations).
Par exemple cette commande :
guix gc --derivers $(uix package -I ^emacs$ | cut -f4)
renvoie les fichiers .drv menant au paquet emacs
installé dans
votre profil.
Remarquez qu’il peut n’y avoir aucun fichier .drv par exemple quand ces fichiers ont été glanés. Il peut aussi y avoir plus d’un fichier .drv correspondant à cause de dérivations à sortie fixées.
Enfin, les options suivantes vous permettent de vérifier l’intégrité du dépôt et de contrôler l’utilisation du disque.
Vérifier l’intégrité du dépôt.
Par défaut, s’assurer que tous les éléments du dépôt marqués comme valides dans la base de données du démon existent bien dans /gnu/store.
Lorsqu’elle est fournie, l’option doit être une liste séparée par des
virgule de l’un ou plus parmi contents
et repair
.
Lorsque vous passez --verify=contents, le démon calcul le hash du contenu de chaque élément du dépôt et le compare au hash de sa base de données. Les différences de hash sont rapportées comme des corruptions de données. Comme elle traverse tous les fichiers du dépôt, cette commande peut prendre très longtemps pour terminer, surtout sur un système avec un disque lent.
Utiliser --verify=repair ou --verify=contents,repair fait
que le démon essaie de réparer les objets du dépôt corrompus en récupérant
leurs substituts (voir Substituts). Comme la réparation n’est pas
atomique et donc potentiellement dangereuse, elle n’est disponible que pour
l’administrateur système. Une alternative plus légère lorsque vous
connaissez exactement quelle entrée est corrompue consiste à lancer
guix build --repair
(voir Invoquer guix build
).
Optimiser le dépôt en liant en dur les fichiers identiques — c’est la déduplication.
Le démon effectue une déduplication après chaque import d’archive ou construction réussie, à moins qu’il n’ait été lancé avec --disable-deduplication (voir --disable-deduplication). Ainsi, cette option est surtout utile lorsque le démon tourne avec --disable-deduplication.
Guix utilise une base de données sqlite pour garder la trace des éléments du
dépôt (voir Le dépôt). Avec le temps il est possible que la base de
données grossisse et soit fragmentée. En conséquence, vous pourriez vouloir
effacer l’espace libéré et recoller les pages partiellement utilisées dans
la base de données laissées par la suppression des paquets ou après le
lancement du ramasse-miettes. Lancer sudo guix gc
--vacuum-database
verrouillera la base de données et lancera un
VACUUM
du dépôt, pour défragmenter la base de données et libérer les
pages vides, et déverrouillera la base une fois l’opération terminée.
Suivant: Invoquer guix pull
, Précédent: Invoking guix locate
, Monter: Gestion de paquets [Table des matières][Index]