сколько места стоит данный пакет и зависимости?

учитывая имя пакета, я хочу выяснить, сколько места освободилось бы, если бы пакет и его зависимости были удалены.

Поскольку зависимости могут быть разделены между пакетами, возможно, правильный путь для их определения: сколько места занимает пакет, включая все зависимости, которые используются только этим пакетом

Я бы предпочел решения CLI потому что я бы использовал их в сценариях

19
задан 7 July 2014 в 17:00

4 ответа

Самый простой и ошибка свободный способ использовать пространство программой и всеми ее зависимостями состоит в том, чтобы использовать склонный самой. Отметьте зависимости, которые не используются другой программой, но устанавливаются с пакетом, не рассматривается, поскольку они не удалены.
Просто

sudo apt-get --assume-no autoremove PACKAGENAME

или

apt-space-used-by() { sudo apt-get --assume-no autoremove $@ | grep freed | cut -d' ' -f4-5 ;}

использование apt-space-used-by PACKAGENAME

Этот сценарий Python выглядит многообещающим (bigpkg - находят пакеты, которые требуют большого количества пространства в Вашей системе)

15
ответ дан 7 July 2014 в 17:00
  • Просто попробуйте следующую команду (для освобождения дискового пространства чисткой):

    echo -n | sudo apt-get purge <package> | grep "disk space will be freed"
    

    или

    echo -n | sudo apt-get purge --auto-remove <package> | grep "disk space will be freed"
    

    где замена <package> с Вашим package-name (пример: gimp)

    Это не произведет чистку пакета с зависимостями, но только дает, из какого количества дисковое пространство будет освобождено со справкой grep!


  • Используя dpkg --print-avail или apt-cache show:

    apt-cache show <package> | grep "Installed-Size"
    

    или

    dpkg --print-avail <package> | grep "Installed-Size"
    

    Это отобразит установленный размер <package>.

    Пример:

    $ apt-cache show gimp | grep "Installed-Size"
    Installed-Size: 15024
    

  • Список вида установленных пакетов размером

    dpkg-query -W -f='${Installed-Size;8}  ${Package}\n' | sort -n
    

    Можно использовать больше для мудрого страницей:

    dpkg-query -W -f='${Installed-Size;8}  ${Package}\n' | sort -n | more
    

    Выше пакетов списка согласно соглашению размера можно использовать tail перечислять пакеты, использующие главный размер следующим образом:

    dpkg-query -W -f='${Installed-Size;8}  ${Package}\n' | sort -n | tail
    

  • Используя dpigs (от человека dpigs):

    dpigs - Покажите, который установил пакеты, занимают большую часть места

     dpigs sorts the installed packages by size and outputs the largest ones. Per default dpigs displays the largest 10 packages. You can change
       this value by using the -n option (see "OPTIONS"). The information is taken from the dpkg status file with grep-status(1) 

    Это Может быть установлено: sudo apt-get install debian-goodies
    Пример команды выполнения

    $ dpigs
    115449 wine1.6-i386
    110356 linux-image-extra-3.13.0-24-generic
    103828 libreoffice-core
    86240 fonts-horai-umefont
    74016 libreoffice-common
    72709 liboxideqtcore0
    61736 linux-headers-3.13.0-24
    60821 libpyzy-1.0-0
    59477 firefox
    59443 thunderbird
    

  • Нахождение размера Неиспользованного пакета:-

    popularity-contest (8) - list the most popular Debian packages
    popcon-largest-unused (8) - List size of unused packages
    

    Первый показ popularity-contest и затем popcon-largest-unused, Это поможет Вам найти размер неиспользованного пакета. Посетите страницы справочника для получения дополнительной информации.


Я старался изо всех сил обеспечивать полезные команды шагами.
Надежда они помогают!

5
ответ дан 7 July 2014 в 17:00

apt-cache show packagename списки, среди прочего, установленный размер пакета и зависимости пакета. Существует также apt-cache rdepends packagename для списка пакетов то использование тот пакет.

Вы могли бы хотеть использовать последнюю команду и apt-cache policy packagename, чтобы определить, установлен ли реверс-depdendency.

2
ответ дан 7 July 2014 в 17:00

Вот сценарий, который делает это. Никакой благоприятный для машины вывод все же.

sudo apt-get install python-apt

и Вы готовы пойти.

#!/usr/bin/env python2
# -*- coding: utf-8 -*-

from __future__ import (absolute_import, division,
                        print_function, unicode_literals)
import apt
from apt.cache import Filter, FilteredCache

MB = 1024*1024

class InstalledFilter(Filter):
    def apply(self, pkg):
        return pkg.is_installed

def iter_base_deps(cache, package):
    deps = []
    version = package.installed
    for dep_type in ('Depends', 'PreDepends', 'Recommends'):
        deps.extend(version.get_dependencies(dep_type))
    for dep in deps:
        for base_dep in dep:
            if base_dep.name in cache:
                yield base_dep

def main():
    package_ref_count = {}
    results = []

    cache = FilteredCache(apt.Cache())
    cache.set_filter(InstalledFilter())
    for package in cache:
        for base_dep in iter_base_deps(cache, package):
            if base_dep.name in package_ref_count:
                package_ref_count[base_dep.name] += 1
            else:
                package_ref_count[base_dep.name] = 1

    for package in cache:
        base_deps_size = 0
        base_deps = []
        for base_dep in iter_base_deps(cache, package):
            if package_ref_count[base_dep.name] == 1:
                base_deps.append(base_dep)
                base_deps_size += cache[base_dep.name].installed.installed_size
        total_size = package.installed.installed_size + base_deps_size
        results.append((total_size, package, base_deps_size, base_deps))

    for total_size, package, base_deps_size, base_deps in sorted(results, reverse=True):
        if package.name in package_ref_count:
            continue
        if total_size < MB:
            break
        self_size = package.installed.installed_size
        base_dep_count = len(base_deps)
        print('{:.1f} MB  {}'.format(total_size/MB, package.name) + \
              (' with {} deps'.format(base_dep_count) if base_dep_count else ''))
        if base_dep_count:
            print('    {:.1f} MB  self'.format(self_size/MB))
            for base_dep in base_deps:
                size = cache[base_dep.name].installed.installed_size
                print('    {:.1f} MB  {}'.format(size/MB, base_dep.name))


if __name__ == '__main__':
    main()

Пример произвел:

72.6 MB  gthumb with 4 deps
    3.0 MB  self
    61.0 MB  libwebkit2gtk-3.0-25
    8.0 MB  gthumb-data
    0.1 MB  gstreamer0.10-gnomevfs
    0.5 MB  flex
1
ответ дан 23 November 2019 в 02:01

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

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