Next: , Previous: , Up: Управление пакетами   [Contents][Index]


5.6 Вызов 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 из-за дериваций с фиксированным выходом.

Наконец, следующие опции позволяют проверить целостность склада и контролировать использование диска.

--verify[=options]

Проверить целостность склада.

По умолчанию убедиться, что все элементы склада, которые в базе данных демона помечены как действующие, на самом деле присутствуют в /gnu/store.

Опции options, если они указаны, должны представлять собой список, разделённый запятыми, содержащий одно или более значений contents и repair.

Если задано --verify=contents, демон вычисляет хеш содержимого каждого элемента склада и сравнивает с его хешем в базе данных. Несовпадения хеша отображаются в отчёте как повреждение данных. Так как она проходит все файлы склада, эта команда может занять много времени, особенно в системах с медленным диском.

Использование --verify=repair или --verify=contents,repair указывает демону предпринять попытку восстановить разрушенные элементы склада, выбирая подстановки для них (see Подстановки). Так как восстановление не атомарное, и поэтому потенциально опасно, оно доступно только системному администратору. Малозатратная альтернатива в случае, если вы знаете точно, какие элементы склада испорчены, — это guix build --repair (see Запуск guix build).

--optimize

Оптимизировать склад с помощью жёстких ссылок на идентичные файлы — это дедупликация.

Демон выполняет дедупликацию после каждой успешной сборки или импорта архива, если конечно оно не было запущено с --disable-deduplication (see --disable-deduplication). Так что эта опция особенно важна, если демон запущено с --disable-deduplication.

--vacuum-database

Guix uses an sqlite database to keep track of the items in (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]