Como posso verificar quanto espaço ocupa pacotes específicos?

1

Eu mantenho uma lista de pacotes que eu instalei no meu sistema (usando apt-get ). Eu gostaria de saber quanto espaço esses pacotes ocupam, junto com suas dependências, se possível.

Posso usar alguma ferramenta para isso ou tenho que escrever meu próprio script que resumiria todos os arquivos correspondentes (binários, bibliotecas dinâmicas, etc.)?

    
por syntagma 28.03.2015 / 22:23

2 respostas

3

Você pode tentar este script bash :

#!/bin/bash
all_files=( $(dpkg -L "") )
for file in "${all_files[@]}"; do
        [ -f "$file" ] && du -h "$file"
done

Passe o nome do pacote como primeiro argumento, por ex. bash script.sh nano .

dpkg -L package listará todos os arquivos instalados por package , salvamos a lista como uma matriz. Incluirá também os diretórios-pai, para se livrar dos diretórios, fizemos um teste [ -f "$file" ] , portanto, se o elemento da matriz for um arquivo regular, obteremos o tamanho do arquivo no disco por du -h .

Aqui está um resultado de teste:

$ bash check_disk.sh vlc
4.0K    /usr/share/menu/vlc
4.0K    /usr/share/lintian/overrides/vlc
8.0K    /usr/share/applications/vlc.desktop
4.0K    /usr/share/kde4/apps/solid/actions/vlc-openbd.desktop
4.0K    /usr/share/kde4/apps/solid/actions/vlc-opencda.desktop
4.0K    /usr/share/kde4/apps/solid/actions/vlc-opendvd.desktop
4.0K    /usr/share/kde4/apps/solid/actions/vlc-openvcd.desktop
4.0K    /usr/lib/mime/packages/vlc
32K /usr/lib/vlc/plugins/video_output/libxcb_xv_plugin.so
12K /usr/lib/vlc/plugins/video_output/libaa_plugin.so
28K /usr/lib/vlc/plugins/video_output/libxcb_window_plugin.so
32K /usr/lib/vlc/plugins/video_output/libgl_plugin.so
24K /usr/lib/vlc/plugins/video_output/libxcb_x11_plugin.so
12K /usr/lib/vlc/plugins/video_output/libglx_plugin.so
40K /usr/lib/vlc/plugins/video_output/libxcb_glx_plugin.so
16K /usr/lib/vlc/plugins/video_output/libcaca_plugin.so
32K /usr/lib/vlc/plugins/video_filter/libpanoramix_plugin.so
16K /usr/lib/vlc/plugins/services_discovery/libxcb_apps_plugin.so
776K    /usr/lib/vlc/plugins/gui/libskins2_plugin.so
2.5M    /usr/lib/vlc/plugins/gui/libqt4_plugin.so
16K /usr/lib/vlc/plugins/control/libglobalhotkeys_plugin.so
20K /usr/lib/vlc/plugins/access/libxcb_screen_plugin.so
12K /usr/lib/vlc/plugins/misc/libxdg_screensaver_plugin.so
12K /usr/lib/vlc/plugins/codec/libsdl_image_plugin.so
32K /usr/lib/vlc/plugins/codec/libvaapi_plugin.so
4.0K    /usr/bin/qvlc
4.0K    /usr/bin/svlc
0   /usr/share/man/man1/qvlc.1.gz
0   /usr/share/man/man1/svlc.1.gz
    
por heemayl 29.03.2015 / 00:00
1

Não foi possível resistir a expandir um pouco, completamente baseado no conceito de heemayl, para criar um script com duas opções:

  1. Produza somente o tamanho (total) de um pacote instalado (mas sem suas dependências, já que as dependências são praticamente sempre compartilhadas, portanto, qual pacote deve tê-lo em sua "conta"?)

    um exemplo:

    $ check_size gimp
    6644.1K

ou:

  1. Produza um relatório mais detalhado sobre os diretórios, os arquivos, seus tamanhos e tamanho total dos arquivos instalados (obviamente, a maioria das linhas são ignoradas):
    $ check_size gimp --verbose

    Directories:
    ====================
    /usr/share/man
    /usr/share/man/man1
    /usr/share/menu
    /usr/share/pixmaps
    /usr/share/python
    /usr/share/python/runtime.d

    Installed files:
    ====================
    48K /usr/lib/gimp/2.0/plug-ins/sample-colorize
    5,5M    /usr/bin/gimp-2.8
    52K /usr/lib/gimp/2.0/plug-ins/curve-bend
    52K /usr/lib/gimp/2.0/plug-ins/file-psd-load
    52K /usr/lib/gimp/2.0/plug-ins/filter-pack
    52K /usr/lib/gimp/2.0/plug-ins/pagecurl
    52K /usr/lib/gimp/2.0/plug-ins/video
    56K /usr/lib/gimp/2.0/plug-ins/color-rotate
    56K /usr/lib/gimp/2.0/plug-ins/file-ps
    56K /usr/lib/gimp/2.0/plug-ins/print
    56K /usr/lib/gimp/2.0/plug-ins/selection-to-path

    Total size:
    ====================
    6644.1K

Como usar

  1. Copie o script abaixo em um arquivo vazio, salve-o como check_size em ~/bin (ou em outro lugar em $ PATH), sem extensão de idioma.
  2. Torne o script executável
  3. Se você acabou de criar o diretório ~/bin , execute source .profile ou efetue logout / in.
  4. Execute-o pelo comando:

    check_size <package>
    

    apenas para o tamanho ou:

    check_size <package> --verbose
    

    para a informação detalhada

O script

#!/usr/bin/env python3
import subprocess
import os
import sys

files = []; drs = []; sizes = []
get =  subprocess.check_output(["/bin/bash", "-c", "dpkg -L "+sys.argv[1]]).decode("utf-8").splitlines()
for l in get:
    if os.path.isfile(l):
        info = subprocess.check_output(["du", "-h", l]).decode("utf-8")
        sizes.append(float(info.split()[0].replace("K", "").replace(",", ".").replace("M", "")))
        files.append(info)
    else:
        drs.append(l)
try:
    if sys.argv[2] == "--verbose":
        print("\nDirectories:\n"+20*"=")
        for l in sorted(drs):
            print(l)
        print("\nInstalled files:\n"+20*"=")
        for l in sorted(files):
            print(l.strip())
        print("\nTotal size:\n"+20*"=")
        print(str(sum(sizes))+"K")
except IndexError:
    print(str(sum(sizes))+"K")
    
por Jacob Vlijm 29.03.2015 / 19:42