eclean

From Gentoo Wiki
Jump to:navigation Jump to:search
This page is a translated version of the page Eclean and the translation is 77% 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

Очитка директории бинарных пакетов

Для директории с бинарными пакетами используйте следующую команду:

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 будет хранить скачанные архивы с исходным кодом.