[分享]获取 apt 安裝软件包信息的命令

编译打包和其他
回复
bob.wang
帖子: 5
注册时间: 2014-07-05 13:58
系统: GNU/Linux

[分享]获取 apt 安裝软件包信息的命令

#1

帖子 bob.wang » 2014-09-01 21:29

代码: 全选

(for pkgName in $(zcat --force /var/log/apt/history.log* | awk '$1 == "Commandline:" && $2 ~ /apt/ && $3 == "install" {print $4}' | uniq);
do
	zcat --force /var/log/dpkg.* | awk '$3 == "status" && $4 == "installed" {print $1" "$2" "$5" "$6}' | grep --ignore-case "\<$pkgName\>";
done) | sort --key=1 --key=2
该命令首先用 zcat 将 apt 安装历史记录日志全部输出到 stdout, 然后通过 awk 将记录为当时用 apt 安装软件包命令行中的包名提取出来, 并过滤重复项.

然后用 grep 筛选同样由 zcat 提供的安装详细记录中有无包含包名, 如果有, 则输出.

最后将上面整个命令用圆括号括起来, 方便 sort 按照安装成功时间排序.

命令中之所以使用长参数, 这样比较容易理解命令的具体用途.

因为自己对于这些命令理解的还不是很充分,比如, 目前还不知道如何将变量代入到 awk 正则判断中, 还望大家多多包含.
bob.wang
帖子: 5
注册时间: 2014-07-05 13:58
系统: GNU/Linux

Re: [分享]获取 apt 安裝软件包信息的命令

#2

帖子 bob.wang » 2014-09-01 22:26

修改了一下, 之前把 apt-get 考虑掉了, 同时发现在 history.log 记录的包名, 可能在 dpkg.log 会变为小写, 所以 grep 也作了不去分大小写的操作.
回复