Eclean
eclean é uma ferramenta para limpeza de arquivos fonte e pacotes binários do repositório. Ele faz parte do conjunto de ferramentas gentoolkit.
Também está disponível no Gentoo a ferramenta eclean-kernel, disponível separadamente das ferramentas eclean instaladas com o gentoolkit, no pacote app-admin/eclean-kernel. A eclean-kernel é usada para automatizar a limpeza de kernels antigos do Linux.
Instalação
Emerge
Instalar app-portage/gentoolkit:
root #
emerge --ask app-portage/gentoolkit
Veja o artigo do Gentoolkit para obter informações sobre outras utilidades incluídas no pacote app-portage/gentoolkit.
Uso
Por padrão, arquivos fonte estão localizados no diretório /var/cache/distfiles, enquanto pacotes binários estão localizados no diretório /var/cache/binpkgs. As localizações para cada um podem ser alteradas mudando as variáveis DISTDIR e PKGDIR respectivamente no /etc/portage/make.conf. Ambas as localizações podem ocupar muito espaço se não for feita uma limpeza periódica; Por essa razão o eclean foi criado.
Invocação
Use eclean --help para ver um sumário completo das ações, lista de opções e usos:
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`
Limpeza de distfiles
Limpe o diretório dos arquivos fonte passando o argumento distfiles
:
root #
eclean distfiles
Ou executando o comando:
root #
eclean-dist
Limpeza de pacotes
Para o diretório com os pacotes binários, use o seguinte comando:
root #
eclean packages
Ou executando o comando:
root #
eclean-pkg
Opções
Por padrão, os arquivos fonte e os pacotes binários correspondentes a qualquer ebuild no repositório atual não serão excluídos. Dessa forma, os administradores podem facilmente fazer o downgrade de um pacote ou instalar um pacote removido anteriormente, desde que o pacote ainda esteja na árvore do repositório atual.
Como um exemplo, suponha que os seguintes pacotes foo-1.0 e foo-1.1 estão no repositório. Depois de atualizar do foo-1.0 para o foo-1.1, execute o comando eclean distfiles: arquivos fonte de ambas as versões serão mantidos, portanto, se ocorrer um problema com o foo-1.1, o usuário pode facilmente reinstalar o foo-1.0 sem fazer o download novamente.
Uma outra opção é instalar um pacote anteriormente removido. Suponha que um pacote foo(qualquer versão) está instalado no sistema. Após removê-lo e executar eclean distfiles, os arquivos de origem de foo serão mantidos, para que ele possa ser reinstalado sem fazer o download novamente.
Os mesmo exemplos também se aplicam para pacotes binários.
Para salvar espaço em disco, adicione a opção --deep
: todo arquivo fonte ou pacote binário que não corresponda a algum pacote currently installed (a versão importa) será excluido. Observe que desta forma os usuários nao serão protegidos caso precisem fazer um downgrade de algum pacote ou reinstalar um pacote anteriormente removido.
Como uma alternativa, use as opções --deep
e --package-names
: Todo arquivo de origem ou pacote binário que não corresponde a algum pacote instalado (versão não importa) será deletado. Isso ainda não protegerá o usuário em caso de ser necessária a reinstalação de um pacote anteriormente removido, mas protegerá as fontes se precisar ser feito um downgrade do pacote posteriormente.
Para mais detalhes, leia a o manual do eclean(1):
user $
man 1 eclean
Solução de problemas
A limpeza deixa alguns distfiles
Problema: ao tentar limpar os distfiles, alguns distfiles não são removidos e a mensagem "The following unavailable installed packages were found" é exibida. Por exemplo:
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
Essa situação ocorre quando o ebuild de um pacote foi removido do repositório ebuild do Gentoo e o pacote está atualmente instalado no sistema. Geralmente, se os pacotes/distfiles listados não forem mais necessários, a razão pela qual eles não estão sendo removidos é porque estão listados no arquivo world do Portage.
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
Em seguida, execute novamente eclean para remover os distfiles.
Veja também
- Gentoolkit — um conjunto de ferramentas para facilitar a administração do sistema Gentoo, em particular do Portage.
- Knowledge Base: Remove obsoleted distfiles
- DISTDIR — defines the location where Portage will store the downloaded source code archives.