Como deletar pacotes antigos instalados pelo pacman no Arch Linux?

38

Eu instalei recentemente o Arch Linux e descobri que estou consumindo muita memória de forma relativamente rápida. Por alguma razão eu já usei 17GB em apenas 2 semanas. Eu não tenho muito software instalado, então sou levado a acreditar que todos os pacotes antigos são mantidos em algum lugar.

Para suportar isso, notei que, se eu instalei um pacote, remova esse pacote e reinstale-o, o pacman apenas descompacta e reinstala o software sem precisar fazer o download novamente.

Depois que eu instalei o meu sistema básico, antes de um software extra, eu usei cerca de 2GB ou mais, talvez. Desde então, instalei apenas o Matlab, Skype, Wine e alguns outros pequenos programas. É claro que eu também instalei bibliotecas perdidas e coisas assim, mas não valem quase 15 GB.

Estou completamente errado aqui ou o Arch nunca exclui pacotes antigos ao fazer o download / atualizar para novas versões?

Se sim, como eu excluo esses pacotes não usados?

Além disso, quando removo pacotes instalados, uso pacman -R ...

    
por sherrellbc 16.06.2014 / 01:14

4 respostas

42

Não, o pacman não remove pacotes antigos do seu cache ( /var/cache/pacman/pkg ) e, com o tempo, ele pode ser preenchido.

Você pode adotar duas abordagens para limpar o cache: a força bruta com pacman -Sc :

-c, --clean
Remove packages that are no longer installed from the cache as well as currently unused sync databases to free up disk space. When pacman downloads packages, it saves them in a cache directory. In addition, databases are saved for every sync DB you download from, and are not deleted even if they are removed from the configuration file pacman.conf(5). Use one --clean switch to only remove packages that are no longer installed; use two to remove all files from the cache. In both cases, you will have a yes or no option to remove packages and/or unused downloaded databases.

Ou, para uma abordagem mais diferenciada, você pode usar um dos utilitários fornecidos com pacman-contrib, paccache :

paccache is a flexible pacman cache cleaning utility, which has numerous options to help control how much, and what, is deleted from any directory containing pacman package tarballs.

Por padrão, paccache removerá todas as últimas três versões de um pacote instalado, mas você poderá alterar esse número com a opção -k, --keep . Há também uma opção -d, --dryrun para visualizar suas alterações. Veja paccache --help para todos os switches.

Existem vários utilitários no pacote pacman-contrib para ajudar no gerenciamento de pacotes, vale a pena pesquisar todos eles e entender melhor como eles funcionam e tornar o Arch mais fácil. Você pode ver a lista completa com:

pacman -Ql pacman-contrib | awk -F"[/ ]" '/\/usr\/bin/ {print $NF}'
    
por 16.06.2014 / 01:23
11

Seu cache de pacotes está em /var/cache/pacman/pkg/ .

Faça:

paccache -d

Para fazer um -dryrun e ver o que uma execução desse utilitário pode remover na próxima vez que você faz:

paccache -r

Para remover pacotes armazenados em cache. 17gbs soa íngreme. Certifique-se de não ter alguns registros de fuga. Faça:

du -h /var/log

Ou apenas:

du -h /var

Para uma ideia mais geral do que está acontecendo.

    
por 16.06.2014 / 01:18
6

pacman -Scc faz o que você está pedindo, mas não é recomendado. Do Wiki

It is also possible to completely empty the cache folder with pacman -Scc, but doing it is considered bad practice, as, in addition to the above, it also prevents from reinstalling a package directly from the cache folder in case of need, thus forcing to redownload it. You should never use it unless there is a desperate need for more disk space.

Como um aparte, quando eu desinstalo os pacotes, eu prefiro usar o pacman -Rnsc , já que ele também remove as dependências do pacote, assim como os pacotes que dependem dele. Como sempre, leia atentamente quais pacotes estão sendo removidos, pois você pode facilmente deixar nosso sistema em um estado inutilizável.

    
por 16.06.2014 / 05:38
4

Sugiro strongmente o uso de paccache em vez de pacman -Sc . Existe até um sinalizador muito eficaz para remover seletivamente as versões dos pacotes desinstalados -u . Os sinalizadores de paccache que eu recomendo são (como parte do paccache v5.0.2):

  • -d , --dryrun : execute uma execução a seco, localizando apenas pacotes candidatos
  • -r , --remove : remova os pacotes candidatos
  • -u , --uninstalled : apenas pacotes desinstalados de destino
  • -k , --keep <num> : mantenha "num" de cada pacote no cache (padrão: 3)

Exemplo: Verifique as versões de cache restantes dos pacotes desinstalados

paccache -dvuk0
    
por 26.10.2017 / 01:12