给定包和依赖关系需要多少空间?
给定一个包名称,我想找到如果包及其依赖项被删除将释放多少空间。
由于依赖关系可能在包之间共享,因此可能正确的方法是:包占用多少空间,包括此包仅使用的所有依赖关系
我更喜欢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-avail
或apt-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
(来自mandpigs
):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
- 桌面无法加载。 14.04。 libstdc ++的问题.so.6
- “试图覆盖’/usr/share/accounts/services/google-im.service’,这也是包帐户-plugin-google 0.12 + 15.04.20150415.1-0ubuntu2”
- Ubuntu 14.04,Clang 3.8:由于缺少libllvm3.8v4而无法更新
- 无法解决未满足的依赖项
- 我无法在代理后面添加PPA存储库
- 适用于待安装软件包的apt changelog
- uname Ubuntu 16.04.1 LT返回错误的内核版本
- 如何假装一个包版本安装?
- 如何为dpkg设置默认选项–configure -a?