再想一想,使用该列表,您可以遍历它并找到每个包的依赖包(而不是依赖包)。如果其中一个在主列表中,请从列表中删除当前包......但只有在您解析了整个列表之后,否则您将错过 3 级以上的 dep 树中的中间包。
您可以通过如下查询找到家属:
aptitude search '~i~Dpackage'
我会尝试编写脚本,但我是在一个小小的手机键盘上输入的。即使我有限制。
编辑:尝试入睡五分钟后,我开始着手解决这个问题。像这样的东西应该可以完成这项工作:
orig=$(aptitude search -F "%p" "?installed ?not(?automatic)")
newlist="";
for p in $orig; do
depended=0;
for dependant in `aptitude search -F "%p" "~i~D$p"`; do
if [[ $orig == "* $dependant *" ]]; then
depended=1;
fi;
done;
if [[ $depended == 0 ]]; then
newlist="$newlist $p";
fi;
done;
echo $newlist
aptitude
可以通过其搜索功能为您提供大部分服务。以下是您如何找到不仅是自动依赖项的所有已安装内容:这不是最佳的,其中一些可能可以被删除,但我不知道一个简单的方法来解决这个问题。或许答案就在于
man aptitude
。再想一想,使用该列表,您可以遍历它并找到每个包的依赖包(而不是依赖包)。如果其中一个在主列表中,请从列表中删除当前包......但只有在您解析了整个列表之后,否则您将错过 3 级以上的 dep 树中的中间包。
您可以通过如下查询找到家属:
我会尝试编写脚本,但我是在一个小小的手机键盘上输入的。即使我有限制。
编辑:尝试入睡五分钟后,我开始着手解决这个问题。像这样的东西应该可以完成这项工作:
请注意,这需要很长时间才能运行,并且可能过于敏感(例如,它会删除您手动安装的东西,您想要手动安装的东西,如果它们被 $orig 列表中的其他东西所依赖,您也许之后安装)。
我已经编写了一个小的 python 脚本来做到这一点,作为要点发布在这里。
你在命令行上给它一组包名,它应该给你一个更小,最小的包,暗示你作为参数给出的所有其他包。在这里,
x11-proto-fixes-dev
隐含(依赖于)libgtk2.0-dev
:我在一个运行多年的系统上尝试了这个问题和其他两个类似问题的答案,我能得到的最短列表是 1338 个包,其中大部分显然是依赖包或库存包。
但是,在 Unix/Linux Stack Exchange 上,我找到了这个答案,它从 Ubuntu 镜像中提取了供您安装的库存包列表并将其过滤掉。这使我的清单减少到 404 个对我来说看起来很正常的包。