如何找到所有手动安装且不依赖其他已安装软件包的软件包?
答案1
简短的回答是:使用aptitude
如下方法:
aptitude -F%p search '?installed?not(?automatic)
但不幸的是,这个命令返回许多与查询匹配但不是你所期望的包,原因有二:
系统初始安装期间安装了某些软件包,但这些软件包未自动安装
作为元包依赖项安装的包也可能导致非自动安装
我之前想到的解决方案是将前面的命令与dpkg
日志进行匹配,至少尝试消除前面问题列表中第 1 点的影响:
#!/bin/bash
export LC_COLLATE=C
eval $(lesspipe)
vars=($(less $(ls -rt /var/log/dpkg.log*) | grep 'status installed grub-pc' | head -1))
date="${vars[0]}"
time="${vars[1]}"
join \
<(aptitude -F%p search '?installed?not(?automatic)' |
sort) \
<(less $(ls -rt /var/log/dpkg.log*) |
awk -v date=$date -v time=$time '(($1 == date && $2 > time) || $1 > date) && $3 == "install" { print $4, $1, $2 }' |
sort -u) |
awk '{ print $2, $3, $1 }' |
sort
这假设这grub-pc
是初始安装期间安装的最后一个包,并且绝不是完美的,但可以为您提供一个粗略的信息。