Next: Вызов guix pull
, Previous: Invoking guix locate
, Up: Управление пакетами [Contents][Index]
guix gc
Пакеты, которые установлены, но не используются, могут быть очищены как
мусор (garbage-collected). Команда guix gc
позволяет
пользователям непосредственно запустить сборщик мусора и восстановить место
в директории /gnu/store. Это единственный способ удалить файлы
из /gnu/store — удаление файлов вручную может поломать её
безвозвратно!
Сборщик мусора имеет набор известных корней (roots): любой файл в
/gnu/store, доступный из корня, рассматривается как живой
(live) и не может быть удалён; любой другой файл рассматривается как
мёртвый (dead) и может быть удалён. Набор корней сборщика мусора
(сокращённо "GC roots") содержит профили пользователей по умолчанию; по
умолчанию символические ссылки в /var/guix/gcroots представляют эти
корни сборщика мусора. Новые корни могут добавляться, например, командой
guix build --root
(see Запуск guix build
). Команда
guix gc --list-roots
отображает их.
Перед запуском guix gc --collect-garbage
для освобождения места часто
бывает полезно удалить старые поколения из пользовательских профилей; так
старые пакеты, относящиеся к этим поколениям, будут удалены. Это можно
сделать, запустив guix package --delete-generations
(see Вызов guix package
).
Мы рекомендуем запускать сборщик мусора периодически, или когда вы хотите освободить место на диске. Например, чтобы гарантировать, что по меньшей мере 5 Гб будет доступно на вашем диске, просто запустите:
guix gc -F 5G
Хорошо бы запускать это как неинтерактивную периодическую задачу
(see Запланированное исполнения задач, чтобы узнать, как добавить такую
задачу). Запуск guix gc
без аргументов соберёт столько мусора,
сколько возможно, но это часто не удобно: можно обнаружить, что придётся
заново собирать или скачивать программы, "убитые" сборщиком мусора, хотя они
необходимы для сборки другого софта, например, это касается инструментов
компилятора.
Команда guix gc
предоставляет три способа взаимодействия: может
использоваться для сборки мусора (garbage-collect) любых мёртвых файлов (по
умолчанию), для удаления конкретных файлов (опция --delete
), для
вывода информации сборщика мусора, а также для более изощрённых
запросов. Опции сборщика мусора:
--collect-garbage[=min]
-C [min]
Собрать мусор, то есть недоступные файлы в /gnu/store и поддиректориях. Это операция по умолчанию, если не заданы опции.
Если задана min, остановиться, когда min байт собрано.
min может быть числом байт или может содержать единицу измерения в
суффиксе, как например, MiB
для мебибайт и GB
гигабайт
(see size specifications in GNU Coreutils).
Если min пропущено, собрать весь мусор.
--free-space=free
-F free
Собирать мусор, пока не станет доступно free места в
/gnu/store, если возможно; free описывает дисковое
пространство, как 500MiB
, как это описанов выше.
Когда free или более места стало свободно в /gnu/store, ничего не делать и немедленно выйти.
--delete-generations[=duration]
-d [duration]
Before starting the garbage collection process, delete all the generations older than duration, for all the user profiles and home environment generations; when run as root, this applies to all the profiles of all the users.
Например, следующая команда удаляет все поколения всех ваших профилей, которые старше 2 месцев (кроме текущего поколения), а затем запускается процесс освобождения мместа, пока по меньшей мере 10 GiB не станет доступно:
guix gc -d 2m -F 10G
--delete
-D
Попытаться удалить все файлы и директории склада, приведённые в аргументах. Это завершается с ошибкой, если какие-либо файлы не присутствуют на складе, или если они ещё живы (live).
--list-failures
Вывести список элементов склада, которые относятся к кешированным неудачным сборкам.
Это ничего не выводит, если демон не был запущен с опцией --cache-failures (see --cache-failures).
--list-roots
Вывести список корней сборщика мусора (GC roots), которыми владеет пользователь; при запуске от root, выводит список всех корней сборщика мусора.
--list-busy
Составляет список элементов хранилица, исользуемых запущенными в данное время процессами. Эти элементы считаются корнями GC: они не могут быть удалены.
--clear-failures
Удалить заданные элементы склада из кеша неудачных сборок.
Опять же эта опция имеет смысл, если демон запущен с --cache-failures. В противном случае это не имеет эффекта.
--list-dead
Вывести список мёртвых файлов и директорий, которые по-прежнему присутствуют на складе, то есть файлы и директории, не доступные более из любого корня.
--list-live
Вывести список живых файлов и директорий склада.
В дополнение можно запросить связи между существующими файлами на складе:
--references
¶--referrers
Вывести список связанных (обязательно, ссылающихся) файлов на складе с указанными аргументами.
--requisites
¶-R
Вывести всё необходимое для файлов на складе, указанных в аргументах. Всё необходимое включает сами файлы на складе, их связи и связи их связей рекурсивно. Другими словами, выводимый список — это непосредственный конвейер файлов на складе.
См. See Вызов guix size
для информации об инструменте профилирования
конвейера для элемента. См. See Вызов guix graph
для информации об
инструменте визуализации графа связей.
--derivers
¶Вернуть деривацию(-ии), производящие данные элементы склада (see Деривации).
Например, эта команда:
guix gc --derivers `guix package -I ^emacs$ | cut -f4`
возвращает файл(ы) .drv, которые произвели пакет emacs
,
установленный в вашем профиле.
Отметим, что может быть не найдено ни одного файла .drv, например, потому что эти файлы были удалены сборщиком мусора. Также может быть более одного файла .drv из-за дериваций с фиксированным выходом.
Наконец, следующие опции позволяют проверить целостность склада и контролировать использование диска.
Проверить целостность склада.
По умолчанию убедиться, что все элементы склада, которые в базе данных демона помечены как действующие, на самом деле присутствуют в /gnu/store.
Опции options, если они указаны, должны представлять собой список,
разделённый запятыми, содержащий одно или более значений contents
и
repair
.
Если задано --verify=contents, демон вычисляет хеш содержимого каждого элемента склада и сравнивает с его хешем в базе данных. Несовпадения хеша отображаются в отчёте как повреждение данных. Так как она проходит все файлы склада, эта команда может занять много времени, особенно в системах с медленным диском.
Использование --verify=repair или --verify=contents,repair
указывает демону предпринять попытку восстановить разрушенные элементы
склада, выбирая подстановки для них (see Подстановки). Так как
восстановление не атомарное, и поэтому потенциально опасно, оно доступно
только системному администратору. Малозатратная альтернатива в случае, если
вы знаете точно, какие элементы склада испорчены, — это guix
build --repair
(see Запуск guix build
).
Оптимизировать склад с помощью жёстких ссылок на идентичные файлы — это дедупликация.
Демон выполняет дедупликацию после каждой успешной сборки или импорта
архива, если конечно оно не было запущено с --disable-deduplication
(see --disable-deduplication
). Так что эта
опция особенно важна, если демон запущено с --disable-deduplication
.
Guix uses an sqlite database to keep track of the items in the store
(see Хранилище). Over time it is possible that the database may grow to
a large size and become fragmented. As a result, one may wish to clear the
freed space and join the partially used pages in the database left behind
from removed packages or after running the garbage collector. Running
sudo guix gc --vacuum-database
will lock the database and
VACUUM
the store, defragmenting the database and purging freed pages,
unlocking the database when it finishes.
Next: Вызов guix pull
, Previous: Invoking guix locate
, Up: Управление пакетами [Contents][Index]