Suivant: , Précédent: , Monter: Gestion de paquets   [Table des matières][Index]


6.5 Invoquer 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.

--verify[=options]

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).

--optimize

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.

--vacuum-database

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: Des paquets avec plusieurs résultats, Monter: Gestion de paquets   [Table des matières][Index]