eclean
eclean — утилита для очистки репозитория от неиспользуемых архивов исходного кода и бинарных пакетов. Она является частью набора программ gentoolkit .
Also available on Gentoo is the eclean-kernel tool, available separately from the eclean tools installed with gentoolkit, in the app-admin/eclean-kernel package. eclean-kernel is used to automate the clean up of old Linux kernels.
Установка
Emerge
Установите app-portage/gentoolkit :
root
#
emerge --ask app-portage/gentoolkit
Смотрите Gentoolkit для получения информации о других утилитах включённых в пакет app-portage/gentoolkit
Использование
Обычно, архивы исходников располагаются в директории /usr/portage/distfiles , в то время как бинарные пакеты расположены в /usr/portage/packages . Расположение каждого из них может быть изменено введением иных переменных DISTDIR и PKGDIR соответственно в /etc/portage/make.conf . Обе директории могут сильно разрастаться, если периодически их не чистить. По этой причине была создана утилита eclean .
Введение
Используйте eclean --help для обзора всех возможных действий, списка опций и их описание:
user
$
eclean --help
Usage:
eclean [global-option] ... <action> [action-option] ...
eclean-dist [global-option, distfiles-option] ...
eclean-pkg [global-option, packages-option] ...
eclean(-dist,-pkg) [--help, --version]
Available global options:
-C, --nocolor - turn off colors on output
-d, --deep - only keep the minimum for a reinstallation
-e, --exclude-file=<path> - path to the exclusion file
-i, --interactive - ask confirmation before deletions
-n, --package-names - protect all versions (when --deep)
-p, --pretend - only display what would be cleaned
-q, --quiet - be as quiet as possible
-t, --time-limit=<time> - don't delete files modified since <time>
<time> is a duration: "1y" is "one year", "2w" is "two weeks", etc.
Units are: y (years), m (months), w (weeks), d (days) and h (hours).
-h, --help - display the help screen
-V, --version - display version info
Available actions:
packages - clean outdated binary packages from PKGDIR
distfiles - clean outdated packages sources files from DISTDIR
Available options for the packages action:
--changed-deps - delete packages for which ebuild dependencies have changed
-i, --ignore-failure - ignore failure to locate PKGDIR
Available options for the distfiles action:
-f, --fetch-restricted - protect fetch-restricted files (when --deep)
-s, --size-limit=<size> - don't delete distfiles bigger than <size>
<size> is a size specification: "10M" is "ten megabytes", "200K" is
"two hundreds kilobytes", etc. Units are: G, M, K and B.
More detailed instruction can be found in `man eclean`
Очистка директории архивов исходных файлов
Очистим директорию архивов исходных файлов введением аргумента
distfiles
:
root
#
eclean distfiles
Или же можно запустить краткий вариант:
root
#
eclean-dist
If
distfiles
takes up too much space, perform a deep clean:
root
#
eclean -d distfiles
Очитка директории бинарных пакетов
Для директории с бинарными пакетами используйте следующую команду:
root
#
eclean packages
Или же можно запустить краткий вариант:
root
#
eclean-pkg
Параметры
Обычно, архивы исходных файлов и бинарные пакеты, соответствующие любому ebuild'у в текущем репозитории, не будут удалены. В этом случае, системные администраторы могут просто установить более старую версию пакета или установить ранее удалённый пакет, так как пакет всё ещё есть в текущем дереве репозитория.
Например, предположим оба пакета foo-1.0 и foo-1.1 есть в репозитории. После обновления с foo-1.0 на foo-1.1 запустим eclean distfiles : архивы обоих версий остались нетронутыми. Поэтому, если произошли неполадки в foo-1.1, то пользователь может просто переустановить foo-1.0 без повторной загрузки.
Другая возможная ситуация - установка ранее удалённого пакета. Предположим, что пакет foo (любой версии) установлен в системе. После (непреднамеренного) удаления этого пакета и запуска eclean distfiles , архивы исходных кодов для foo будут сохранены. Поэтому можно будет переустановить пакет без повторного скачивания.
Такие же примеры и для бинарных пакетов.
Для сохранения большего места на диске добавьте опцию
--deep
: каждый архив исходных файлов или же бинарный пакет, который не соответствует какому-либо "установленному в данный момент" пакету (версия не имеет значения), будет удалён. Пожалуйста, заметьте, что пользователи уже не защищены от необходимости повторного скачивания, в случае, если они должны понизить версию пакета или переустановить удаленный ранее пакет.
В качестве альтернативы можно использовать сразу две опции:
--deep
и
--package-names
. Каждый архив исходных кодов или бинарный пакет, не связанный с сейчас установленным пакетом (версия не имеет значение) будет удалён. С такими опциями также потребуется снова скачать исходные файлы, когда необходимо снова установить ранее удаленный пакет, но, в этом случае, останутся исходные файлы для возможности понижения версии пакета.
Для более детальной информации прочтите eclean(1) man page:
user
$
man 1 eclean
Устранение проблем
Cleaning leaves some distfiles
Problem: when trying to clean distfiles, some distfiles are not removed and the message " The following unavailable installed packages were found " is displayed. For example:
root
#
eclean --deep distfiles
* Building file list for distfiles cleaning...
* Your distfiles directory was already clean.
The following unavailable installed packages were found
sys-kernel/gentoo-sources-4.19.44
sys-kernel/gentoo-sources-4.19.45
sys-kernel/gentoo-sources-4.19.46
This situation occurs when a package's ebuild has been removed from the Gentoo ebuild repository and the package is currently installed on the system. Generally if the listed packages/distfiles are no longer needed; the reason they are not being removed is because they are listed in Portage's world file .
The solution is to to remove the packages from the world file, or remove the specific package atom(s) via:
root
#
emerge --ask --depclean =sys-kernel/gentoo-sources-4.19.44
Then re-run eclean again in order to remove the distfiles.
Смотрите также
- Gentoolkit — набор средств, облегчающих администрирование системы Gentoo и Portage .
- Knowledge Base: Remove obsoleted distfiles
- DISTDIR — определяет каталог, где Portage будет хранить скачанные архивы с исходным кодом.