eclean

From Gentoo Wiki
Jump to:navigation Jump to:search
This page is a translated version of the page Eclean and the translation is 73% complete.
Outdated translations are marked like this.


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.

Смотрите также