Como encontrar pacotes Debian que liberariam mais espaço

4

Digamos que eu tenha uma máquina Debian onde eu gostaria de liberar espaço em '/' removendo pacotes inúteis. Para encontrar bons candidatos de pacotes para revisar, eu gostaria de focar minha atenção nos maiores primeiro.

Parece que o padrão A solução para fazer isso é listar todos os pacotes instalados pelo tamanho instalado. No entanto, essa solução tem muitas desvantagens, porque ignora as dependências e ignora se um pacote foi instalado automaticamente ou manualmente:

  • Se um pacote é grande, mas muitos pacotes instalados manualmente dependem dele, então talvez ele não seja um bom candidato a ser considerado para remoção (por exemplo, remover libicu52 é uma má idéia, mesmo sendo grande)
  • Se um pacote depender de outro pacote, a remoção do segundo também economizará o espaço obtido pela remoção do primeiro (por exemplo, remover libwine também remove o vinho)
  • Se um pacote A depender de outro pacote B e um terceiro pacote C for instalado automaticamente como uma dependência de B, a remoção de A removerá B e C será automaticamente removido, o que deve ser considerado (por exemplo, remover wesnoth-1.10-data remove wesnoth-1.10, o que significa que wesnoth-1.10-music seria removido).

Parece que uma ferramenta certa para esse trabalho deve propor apenas pacotes manualmente instalados para remoção, e deve classificá-los pelo espaço que seria recuperado, removendo-os e executando autoremove (removendo pacotes instalados automaticamente que não são mais necessários) .

Claro que você poderia simular isso por uma variante de esta solução , mas é lenta e feia. Daí a minha pergunta: existe uma ferramenta padrão que analisa o gráfico de dependência de pacotes e calcula essa informação? (Estou pensando em escrever um roteiro para isso, mas gostaria de ter certeza de que ainda não existe).

    
por a3nm 25.07.2014 / 02:31

1 resposta

1

Não conheço uma solução de linha de comando única, embora todas as ferramentas existam ( apt-cache depends --installed , apt-cache rdepends --installed --recurse , apt-mark showmanual , dpigs , etc.). Seria possível hackear um script de linha de comando que poderia tentar encontrar grandes pacotes com poucas dependências reversas instaladas manualmente. Aqui está a prova de conceito que usei como ponto de partida:

dpigs | awk 'NR == 1 {print $2}' | xargs apt-cache rdepends --installed --important --recurse | awk '!/:/ {print $1}' | sort -u

Por outro lado, se você quiser fazer uma análise complexa do gráfico em várias direções (por exemplo, qual conjunto de pacotes instalados manualmente tem o maior conjunto sobreposto de dependências recursivas no disco), ele pode ficar fora de mão rapidamente . Nesse ponto, você provavelmente precisará procurar algo mais personalizável ( awk ou python ?).

Divulgação completa: contribuí para o projeto abaixo. Se esse tipo de coisa é importante para você, por favor leve isso em conta. Se eu estivesse ciente de um projeto similar que já estava nos repositórios do Debian, eu provavelmente colocaria isso em seu lugar.

Enquanto eu prefiro fazer tudo a partir da linha de comando, você pode encontrar pacgraph (também em github ) uma alternativa útil. Foi originalmente escrito por Kyle Keen para o Arch Linux, mas também é compatível com sistemas baseados em deb e rpm. Eu costumava ter um exemplo de saída de um sistema Ubuntu, mas não consigo encontrá-lo, então aqui está um exemplo do seu site:

Brilhante! http://kmkeen.com/pacgraph/laptop.png .

Já faz um tempo desde que eu usei, mas acredito que também há sinalizadores para destacar um pacote em particular, com cores diferentes para suas dependências recursivas e dependências reversas.

    
por 06.08.2014 / 01:37