Как я могу проверить, сколько места занимают определенные пакеты?

Я веду список пакетов, которые я установил в своей системе (используя apt-get). Я хотел бы знать, сколько места занимают эти пакеты, вместе с их зависимостями, если это возможно.

Могу ли я использовать какой-нибудь инструмент для этого или мне нужно написать собственный скрипт, который бы суммировал все соответствующие файлы (двоичные файлы, динамические библиотеки и т. Д.)?

1
задан 29 March 2015 в 00:23

2 ответа

Можно попробовать этот bash сценарий:

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

Передача название пакета как первый аргумент, например, bash script.sh nano.

dpkg -L package перечислит все файлы, установленные package, мы сохранили список как массив. Это будет включать родительские каталоги также, для избавлений от каталогов, мы сделали тест [ -f "$file" ], поэтому если элемент массива будет регулярным файлом тогда, то мы получим размер файла на диске du -h.

Вот результат испытаний:

$ 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
3
ответ дан 29 March 2015 в 00:23

Не мог сопротивляться расширению немного, полностью на основе понятия heemayl, для создания сценария с двумя опциями:

  1. Только произведите (общий) размер установленного пакета (но без его зависимостей, так как зависимости практически всегда совместно используются, поэтому какой пакет должен иметь его на своей "учетной записи"?)

    пример:


    $ check_size gimp
    6644.1K

или:

  1. Представьте более подробный отчет о каталогах, файлах, их размерах и общем размере установленных файлов (очевидно, большинство строк пропускается):

    $ 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

Как использовать

  1. Скопируйте сценарий ниже в пустой файл, сохраните его как check_size в ~/bin (или в другом месте в $PATH), без расширения языка.
  2. Сделайте исполняемый файл сценария
  3. Если Вы просто создали каталог ~/bin, выполненный source .profile, или выйдите из системы / в.
  4. Выполните его любым команда:

    check_size <package>
    

    для просто размера, или:

    check_size <package> --verbose
    

    для подробной информации

Сценарий

#!/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")
4
ответ дан 29 March 2015 в 00:23

Другие вопросы по тегам:

Похожие вопросы: