ubuntu如何获取没有依赖项的已安装软件包列表
软件中心以某种方式显示了相当短的已安装软件包列表。如何在文本文件中获取它?
我试过了:
> dpkg --get-selections|wc -l 3265 > aptitude search '~i!~M'|wc -l 1181 > dpkg -l | grep ^ii | sed 's_ _\t_g' | cut -f 2|wc -l 3076 > dpkg --get-selections | grep -v deinstall|wc -l 3076 > apt-mark showmanual|wc -l 1181
我知道我已经安装了几十个软件包,而不是数千个。我需要在列表中准确地选择我选择的没有依赖项的包来查看它。
更新
非常感谢@kos,我终于得到了该命令的列表:
> zcat /var/log/apt/history.log.*.gz | cat - /var/log/apt/history.log | grep -Po '^Commandline: apt-get install \K.*' | tr ' ' '\n' | grep -v '\-\-reinstall'|grep -v '\-\-force-yes'|grep -v '\-y'|grep -v '\-f'|sort|uniq wc -l 103
这并没有完全回答这个问题:它提供了一个命令来列出所有apt-get install
运行过的命令以及一些关于如何进一步解析列表的建议,以获得apt-get install
除 Ubiquity 运行的那些之外的所有运行过的命令的列表,因为这个任务的完美解决方案似乎不存在。
zcat /var/log/apt/history.log.*.gz | cat - /var/log/apt/history.log | grep -Po '^Commandline:(?= apt-get)(?=.* install ) \K.*'
zcat /var/log/apt/history.log.*.gz
: 解压所有压缩的apt
日志/var/log/apt
,将它们连接起来并打印到stdout
;cat - /var/log/apt/history.log
: 附加/var/log/apt/history.log
并打印到stdout
;grep -Po '^Commandline:(?= apt-get)(?=.* install ) \K.*'
: 仅选择以Commandline: apt-get
包含开头install
和结尾空格开头的行,并将每个选定行的其余部分打印到stdout
;
这将输出apt-get install
曾经运行过的所有命令的列表(唯一不需要的输出可能是一个apt-get
-non-install
命令提到一个install
包,但该包不存在(还没有?),至少在默认存储库中);
注意:在我的安装(Ubuntu 15.04 64 位)中,列出的前四个命令是在安装过程中由 Ubiquity 运行的;要排除这些,您可以将输出通过管道传输到sed
:
sed '1,4d'
因此,Ubuntu 15.04 64 位的最终近似命令是:
zcat /var/log/apt/history.log.*.gz | cat - /var/log/apt/history.log | grep -Po '^Commandline:(?= apt-get)(?=.* install ) \K.*' | sed '1,4d'
相关文章推荐:
赞 (0)