Quais pacotes de software instalados usam mais espaço em disco no Debian?

77

O espaço em disco na minha partição raiz está acabando, por isso desejo excluir alguns aplicativos do sistema. Como posso ver quais pacotes de software usam mais espaço em disco? É possível ver isso a partir de aptitude?

Conheço analisadores genéricos de espaço em disco como dfou baobab, mas preciso de soluções para aplicativos instalados.

Mirzhan Irkegulov
fonte

Respostas:

54

O mais fácil é correr wajig large. O pacote deve estar apt-installausente.

Aqui estão dois links para outras maneiras de fazer isso:

Lembre-se também de que o tamanho instalado é apenas parte do espaço ocupado pelos pacotes. A versão compactada provavelmente ainda está no cache, e isso também ocupa algum espaço. Você pode remover aqueles com apt-get clean.

assassino
fonte
4
O comando para esvaziar o cache do pacote é apt-get clean. “Limpa o repositório local de arquivos de pacotes recuperados” - homem apt-get
manatwork
98

A maneira mais fácil (sem instalar pacotes extras) é:

dpkg-query -Wf '${Installed-Size}\t${Package}\n' | sort -n

que exibe os pacotes em ordem de tamanho, o maior pacote por último.

Infelizmente em pelo menos alguns sistemas, esta lista inclui pacotes que foram removidos, mas não eliminados. Todos esses pacotes podem ser eliminados executando:

dpkg --list |grep "^rc" | cut -d " " -f 3 | xargs sudo dpkg --purge

Ou, se você não quiser eliminar os pacotes desinstalados, poderá usar esta variante para filtrar os pacotes que não estão no estado 'instalado' da lista:

dpkg-query -Wf '${db:Status-Status} ${Installed-Size}\t${Package}\n' | sed -ne 's/^installed //p'|sort -n
JosephH
fonte
2
"Tamanho instalado" é uma estimativa antecipada de quanto espaço o pacote instalado precisaria. Não é o tamanho real, receio.
Rolf
23

Desde que você quer see which [installed] software packages use the most disk space[,] from aptitude... é claro que você pode usar aptitude! por meio de sua CLI ou {interatividade, TUI, sem CLI}. Vamos discutir primeiro a CLI e depois a TUI. De qualquer forma, você só precisa conhecer o

  • opções de linha de comando a serem usadas. O texto a seguir usa opções longas (para facilitar a pesquisa de documentação), mas é claro que também estão disponíveis opções curtas.
  • argumento de linha de comando a ser usado
  • sequência de formato de saída a ser usada

A linha de comando mais básica para mostrar quais pacotes de software instalados usam mais espaço em disco é provavelmente

aptitude search --sort '~installsize' --display-format '%p %I' '~i' | head

então vamos dividir isso:

  • --sorté a ordem de classificação do pacote e ~installsizeespecifica uma política de classificação do pacote .
  • installsizesignifica 'classificar no tamanho instalado (estimado)' e o anterior ~significa classificar em ordem decrescente (já que o padrão para todas as políticas de classificação é crescente).
  • --display-formatmuda o <you guessed :->. A string de formato '%p %I' indica aptitudepara enviar o nome do pacote e, em seguida, o tamanho instalado.
  • '~i'diz aptitudepara procurar apenas pacotes instalados.
  • ... e, a menos que você tenha muito poucos pacotes instalados (minha estação de trabalho Debian genérica tem mais de 2400), você deseja canalizar para headou lessou um arquivo, ou talvez apenas wc -lpara ver quantas linhas aptituderetornarão.

Você também pode querer

  1. especifique a largura da linha (em caracteres) aptitudea ser usada ao exibir, com --width <your desired integer value/>. aptitudeassumirá como padrão a largura do seu terminal, mas às vezes parece errado e às vezes você deseja gravar em um arquivo etc.
  2. exibir mais informações em sua string de formato ou alterar as larguras dos campos. Por exemplo, minha string de formato aprimorado é '%30p %I %r %60d'exibida

    • %30p : nome do pacote no campo width = 30 char
    • %I : tamanho estimado da instalação
    • %r : 'reverse depende count': número aproximado de outros pacotes instalados que dependem deste pacote
    • %60d : breve descrição do pacote no campo width = 60 char

Observe que, se você não vir alterações no seu campo de saída, provavelmente precisará definir --width.

... e você também pode fazer isso na {TUI interativa} aptitude. Por exemplo, para definir a preferência de formato de exibição,

  • clique ou navegue para Opções-> Preferências
  • role até O formato de exibição para visualizações de pacotes
  • adicione %Iao valor atual na posição desejada

Para limitar a pesquisa aos pacotes instalados no interativo aptitude,

  • pressione l(em minúscula L)
  • entrar ~ina caixa de diálogo

Para classificar no tamanho instalado no interativo aptitude,

  • pressione Shift-S(maiúsculas S)
  • entrar installsizena caixa de diálogo

Referências:

Braiam
fonte
Não tenho certeza se existe uma maneira de fazer isso, mas seria bom sempre imprimir o tamanho em kB, o que facilitaria muito a classificação ou o pós-processamento.
derobert
@derobert estava olhando como eu poderia controlar o espaço em branco na saída do aptitude, aparentemente, não há como alterar a saída do tamanho.
Braiam
@ Braiam sim, qual é a quantidade total de espaço ganho se eu remover *texlive*?
terdon
@terdon mm ... não aptitude -s remove '?and(texlive,~i)'seria suficiente? Além disso, você pode adicionar uma etiqueta de usuário a determinado pacote para poder manipulá-los como um todo (como as tarefas).
Braiam 22/01
9

Caso você não queira instalar o wajig. Eu imagino que todo mundo tenha o debian-goodies instalado:

dpigs              - Show which installed packages occupy the most space
dfc
fonte
wajig requer python 3, que é outro 40mb. O debian-goodies requer python 2.6+, assim como 700kb adicionais. Esta ou a resposta de JosephH são as melhores!
Tim O'Brien
Notei que, dpigsna verdade, tem o mesmo resultado que dpkg-query -Wf '${Installed-Size}\t${Package}\n' | sort -nr | head, que é o top 10 dos pacotes instalados que ocupam mais espaço. Ainda assim, dpigsé simples e curto.
Clearkimura 24/05
8

Antes de tudo, use uma ferramenta como baobab( sudo apt-get install baobab) para mostrar onde esse espaço está sendo usado:

insira a descrição da imagem aqui

Isso lhe dará uma boa visão gráfica e o ajudará a restringir o que está ocupando seu espaço. Você também pode obter essas informações na linha de comando usando du:

$ sudo du -ch /

Passe isso sort(assumindo o GNU sort, que deve ser o caso no Debian) para classificar por tamanho de diretório:

$ sudo du -ch / | sort -h

Como próxima etapa, você pode ver quanto espaço um pacote específico está usando com este comando:

$ sudo apt-get --assume-no --purge remove "PACKAGE_NAME" | grep "be freed" | 
   awk '{print $4, $5}' 

No meu sistema, por exemplo, a remoção de todos os texlivepacotes liberará 1.502 MB:

$ sudo apt-get --assume-no --purge remove "texlive*" | grep "be freed" | 
   awk '{print $4, $5}' 
1,502 MB

Por fim, você pode obter essas informações para todos os pacotes instalados com este comando:

$ for i in $(dpkg -l | awk '($1=="ii"){print $2}'); do  
    echo -e "$i\t"$(sudo apt-get --assume-no --purge remove "$i" | 
                    grep "be freed" | awk '{print $4, $5}'); 
  done
terdon
fonte
3

Você pode usar o pacote wajig e o comando

wajig large

A ajuda explica o que isso faz.

wajig large -h

usage: wajig large [-h]

List size of all large (>10MB) installed packages

Veja também a página do projeto .

Faheem Mitha
fonte
3

para adicionar a outras respostas, se você gosta da linha de comando, pode usar bons e velhos durep

# durep -td 1 /etc                         # or -td 2
[ /etc   319.4K (60 files, 43 dirs) ]
  90.2K [########                      ]  28.26% apache2/
  27.5K [##                            ]   8.62% apt/
  23.7K [##                            ]   7.43% mime.types
  19.7K [#                             ]   6.18% cron.daily/
  18.7K [#                             ]   5.87% services
  18.0K [#                             ]   5.64% security/
  14.7K [#                             ]   4.61% init.d/
  13.2K [#                             ]   4.13% ssl/
  11.1K [#                             ]   3.48% ld.so.cache
   9.0K [                              ]   2.81% locale.gen
   7.8K [                              ]   2.43% pam.d/
   4.5K [                              ]   1.42% default/
   4.3K [                              ]   1.35% skel/
   2.9K [                              ]   0.92% locale.alias

Você provavelmente pode liberar espaço usando localepurge

# dpkg-reconfigure localepurge
# localepurge
localepurge: Disk space freed in /usr/share/locale: 26160 KiB
localepurge: Disk space freed in /usr/share/man: 1304 KiB

Total disk space freed by localepurge: 27464 KiB

Finalmente, você provavelmente pode se livrar de ícones e fontes que às vezes podem ocupar muito espaço. Veja detalhes neste site

https://ownyourbits.com/2017/02/18/squeeze-disk-space-on-a-debian-system/

(exemplos extraídos de ownyourbits)

nachoparker
fonte
dpkg-reconfigure localepurgereclama que o localepurgepacote não está disponível.
Rolf
2

Adicionando mais algumas ferramentas à lista, eu sempre usei debfostere deborphanem meus sistemas. Eles são mais úteis para caçar dependências antigas que estão por aí após atualizações.

apt-get autoremoveé ótimo, mas não recebe tudo e, como segue as marcas de instalação, nem sempre ele sabe o que deseja manter. Usar apt-markpermite direcioná-lo até certo ponto, no entanto.

Veja também: https://wiki.debian.org/ReduceDebian

XTL
fonte
0

Embora esta seja uma boa coleção de ferramentas, à qual eu adicionaria o KDE / QT Filelight, que é semelhante a outras ferramentas de uso de espaço em disco da GUI, não é a resposta literal ao título do tópico.

Se você tomar a pergunta desse encadeamento literalmente, ou seja, quais são os maiores pacotes em seu sistema, em regra, eles são:

O pacote de pacotes libreoffice, que não é um pacote único, mas é realmente grande.

Acho que o kernel do linux e os pacotes de cabeçalho associados vêm em segundo lugar, e se você tiver vários kernels instalados, o que a maioria dos sistemas costuma ter, cada um está por perto, acho que o espaço em disco de 135 mB aumenta aproximadamente a cada ano, mas é tão grande . Se você usar drivers de vídeo não gratuitos, haverá também os pacotes / arquivos de driver associados. Observe que, como no libreoffice, cada kernel pode realmente ser composto de 2 ou 3 pacotes, a imagem, o cabeçalho e o driver, portanto, uma contagem literal por tamanho de pacote não é tão precisa, exceto para ter uma noção geral.

Depois disso, não há um grande número de pacotes massivos no pool de pacotes do Debian que eu saiba.

Acho que quando a partição raiz começa a ficar grande o suficiente para você começar a se perguntar como se livrar dos pacotes para reduzi-la, geralmente é hora de mover / redimensionar para uma partição raiz maior.

O apt-get clean, é claro, é a primeira coisa a ser executada, para se livrar de todos os arquivos .deb armazenados em cache, mas depois de removê-lo e dizer apenas 2 kernels, se você ainda estiver com pouco espaço, é mais É prático aumentar o tamanho da partição, pois as limpezas etc. são apenas sinais de alerta que você está executando próximo ao espaço da partição raiz, o que pode ser um problema real se o apt não tiver espaço suficiente em / var para realmente baixar e extrair pacotes para um Melhorar. Limpar as ações de limpeza que restarem dos arquivos de configuração dos pacotes removidos não ajudará em nada a recuperar o espaço em disco, pois eles são pequenos, mas é bom fazê-lo de vez em quando apenas para limpar a sujeira, mas não deve '' não se confunda com a recuperação de qualquer espaço em disco significativo.

O apt-get auto-remove também não é ruim, mas lembre-se de que às vezes é errado o pacote ser removido, por isso, verifique a lista com cuidado antes de permitir que o apt remova as coisas. Tecnicamente, é melhor limpar essa lista, para que você se livre dos arquivos de configuração e ao mesmo tempo remova ou remova automaticamente, acredito que os deixe no lugar.

Lizardx
fonte