我正在做一个服务器从一个Ubuntu盒到另一个。 我不是把旧的盒子克隆到新的; 我正在创build一个新的系统,并根据需要移动数据。 我想安装新盒子上的所有软件。
有没有一种简单的方法来查找所有“sudo apt-get install”命令的历史logging? 也就是说,dpkg -l显示了所有已安装的软件包,但没有安装它们的顶级软件包。 如果有一种方法让dpkg给我安装包,我可以在那find唯一的; 否则,我想要别的东西说“你安装了这24个软件包”。
apt历史logging在/var/log/apt/history.log如上面的注释中所述。 也就是说,这不会列出使用dpkg或GUI(如gdebi手动安装的软件包。 要查看所有通过dpkg的软件包,可以查看/var/log/dpkg.log 。
http://www.debianadmin.com/clone-your-ubuntu-installation.html
和/var/adm/apt/history.log
您可以列出使用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)
grep -i "Commandline" /var/log/apt/history.log
显示您使用的所有软件包: sudo apt-get install xxxxx
而不是tac / head组合,最好使用tail(最后25行):
tail -n 25 /var/log/apt/history.log
要按降序获取最近安装的软件包列表,我喜欢使用(例如25行):
tac /var/log/apt/history.log |head --lines=25