如何检查系统中是谁安装了什么?

如何知道:
1. 系统中安装了哪些软件包? 2. 安装这些软件包的用户是谁?
3个回答

您可以使用以下命令来查看您的软件包选择(安装软件包):
dpkg-query -l

阅读更多:https://wiki.debian.org/ListInstalledPackages

@mook765表示:“您可以通过检查/var/log/apt/history.log和相关存档/var/log/apt/history.log.#.gz来找出是哪个用户请求了安装。”


1你可以通过检查var/log/apt/history.log和相关的归档文件/var/log/apt/history.log.#.gz来找出是哪个用户请求了安装,你可以在回答中包含这些信息。 - mook765
你应该整理一下这个答案,它很乱,那些划掉的线是怎么回事?-1 - Mark Kirby

你想回溯多久的记录?
查看这个日志:
grep " install " /var/log/dpkg.log

之前的那个:

grep " install " /var/log/dpkg.log.1

或者存档:
zgrep " install " /var/log/dpkg.log.2.gz

现在你有了时间戳,可以与这个列表的时间戳进行对比:
grep sudo /var/log/auth.log

(实际上,你可以只使用最后一个命令完成所有操作)
但是,如果你有很多东西要整理...通过检查dpkg日志,你会更容易知道你要查找的时间。

3嗯...思路不错。也许可以用一个脚本来完成这个侦探工作... - Zanna
你能写下来吗? :) - ultrajohn

一些命令可以从日志中获取这些信息,这是其他人建议的,以便节省筛选整个日志的时间。
zgrep -B1 Install /var/log/apt/history*

输出示例:

/var/log/apt/history.log.4.gz:Requested-By: zanna (1000)
/var/log/apt/history.log.4.gz:Install: powertop:amd64 (2.8-1build1)

或者

zgrep 'sudo.*install ' /var/log/auth*

输出示例:

/var/log/auth.log.3.gz:Sep 18 07:09:28 monster sudo:    zanna : TTY=pts/1 ; PWD=/home/zanna/Downloads ; USER=root ; COMMAND=/usr/bin/apt install jq

将tee或>输出到文件中以便更方便地浏览,例如
zgrep -B1 Install /var/log/apt/history* > ~/install.log