我即将把服务器从一个 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
http://www.debianadmin.com/clone-your-ubuntu-installation.html
和 /var/adm/apt/history.log
答案4
与 tac / head 组合相比,最好使用 tail(最后 25 行):
tail -n 25 /var/log/apt/history.log