有很多方法可以显示使用手动安装的软件包apt
,例如:
apt-mark showmanual
但是有时候输出的太多了。例如,如果用户手动安装软件包foo
:
apt-get install foo
...并foo
取决于bar
和baz
,然后apt-mark showmanual
将输出:
bar
baz
foo
我们如何只列出顶级手动安装的软件包(即 foo
),而不列出其依赖项(即,不是baz
或bar
)?
以下代码似乎可以工作,但是GNU parallel
调用apt-rdepends
几百次太慢了(对于4核CPU,这要花三个小时):
apt-mark showmanual |
tee /tmp/foo |
parallel "apt-rdepends -f Depends,PreDepends,Suggests,Recommends {} |
tail +2" 2> /dev/null |
tr -s ' ' '\n' |
grep -v '[():]' |
sort -Vu |
grep -wv -f - /tmp/foo
嗯 答案和OP代码是如此不同,并且返回的数据有些不同,以至于我对于哪种方法的数据最正确感到有些困惑。也许需要一个调查答案,从一个最小的测试系统开始,并一次添加一些程序,以查看输出的变化方式和时间。
—
AGC