如何获取 Ubuntu 上“apt-get install”的历史记录?

如何获取 Ubuntu 上“apt-get install”的历史记录?

我即将把服务器从一个 Ubuntu 机器移到另一个。我不会将旧机器克隆到新机器上;我会创建一个新系统并根据需要移动数据。我想将旧机器上的所有软件都安装在新机器上。

有没有一种简单的方法可以找到我一段时间内给出的所有“sudo apt-get install”命令的历史记录?也就是说,dpkg -l 会显示所有已安装的软件包,但不显示哪个顶级软件包安装了它们。如果有办法让 dpkg 给我安装软件包,我可以在那里找到唯一的软件包;否则,我想要其他东西来表示“您安装了这 24 个软件包”。

答案1

历史apt记录位于,/var/log/apt/history.log如上文注释中所述。也就是说,这不会列出手动安装的软件包,使用dpkg或 GUI 安装的软件包,例如gdebi。要查看所有通过 的软件包dpkg,您可以查看/var/log/dpkg.log

答案2

您可以列出已明确请求安装的软件包apt-mark

apt-mark showmanual

如果您正在运行 Debian 的旧版本,这里有一种手动方法。

以下命令提供请求安装的软件包列表,无论是手动安装还是自动安装。除非您正在安装(卸载)软件包,否则这是已安装软件包的列表。

dpkg --get-selections | sed -n 's/\t\+install$//p'

以下命令提供自动安装的软件包的超集:

</var/lib/apt/extended_states awk -v RS= '/\nAuto-Installed: *1/{print$2}'

总而言之,以下命令列出了手动安装的包:

comm -23 <(dpkg --get-selections | sed -n 's/\t\+install$//p') \
         <(</var/lib/apt/extended_states \
           awk -v RS= '/\nAuto-Installed: *1/{print$2}' |sort)

答案3

答案4

与 tac / head 组合相比,最好使用 tail(最后 25 行):

tail -n 25 /var/log/apt/history.log

相关内容