给定包和依赖关系需要多少空间?

给定一个包名称,我想找到如果包及其依赖项被删除将释放多少空间。

由于依赖关系可能在包之间共享,因此可能正确的方法是:包占用多少空间,包括此包仅使用的所有依赖关系

我更喜欢CLI解决方案,因为我会在脚本中使用它们

获取程序所使用的空间及其所有依赖项的最简单且无错误的方法是使用apt本身。 注意其他程序未使用但随程序包一起安装的依赖项不会被视为未删除。
只是

 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 – 查找需要在系统上占用大量空间的软件包)

  • 只需尝试以下命令(通过清除释放磁盘空间):

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

    要么

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

    用您的package-name替换 (例如: gimp

    不会清除包含依赖关系的 ,但只提供了多少磁盘空间将在 grep帮助下释放


  • 使用dpkg --print-availapt-cache show

     apt-cache show  | grep "Installed-Size" 

    要么

     dpkg --print-avail  | grep "Installed-Size" 

    这将显示安装大小。

    例:

     $ 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 (来自man dpigs ):

    dpigs – 显示安装的软件包占用的空间最多

      dpigs按大小对已安装的软件包进行排序,并输出最大的软件包。 默认情况下,dpigs显示最大的10个包。 你可以改变
       使用-n选项获取此值(请参阅“选项”)。 该信息来自dpkg状态文件,其中包含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 ,这将帮助您找到未使用的包的大小。 访问man-pages以获取更多信息。


我尽力按步骤提供有用的命令。
希望这些有帮助!

apt-cache show packagename列出了包的安装大小和包的依赖关系等。 还有apt-cache rdepends packagename来列出使用该包的包。

您可能希望使用后一个命令和apt-cache policy packagename来确定是否安装了反向depdendency。

这是一个执行此操作的脚本 。 虽然没有机器友好的输出。

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