我即将将服务器从一个Ubuntu盒子移到另一个盒子。我不是将旧的盒子复制到新的盒子。我正在创建一个新系统,并将根据需要移动数据。我想在新盒子的旧盒子上安装我拥有的所有软件。
有没有一种简单的方法来查找我随时间给出的所有“ sudo apt-get install”命令的历史记录?也就是说,dpkg -l显示所有已安装的软件包,但不会显示哪个顶级软件包安装了它们。如果dpkg有办法给我安装软件包,我可以在那里找到独特的软件包。否则,我想让其他人说“您安装了这24个软件包”。
我即将将服务器从一个Ubuntu盒子移到另一个盒子。我不是将旧的盒子复制到新的盒子。我正在创建一个新系统,并将根据需要移动数据。我想在新盒子的旧盒子上安装我拥有的所有软件。
有没有一种简单的方法来查找我随时间给出的所有“ sudo apt-get install”命令的历史记录?也就是说,dpkg -l显示所有已安装的软件包,但不会显示哪个顶级软件包安装了它们。如果dpkg有办法给我安装软件包,我可以在那里找到独特的软件包。否则,我想让其他人说“您安装了这24个软件包”。
Answers:
http://www.debianadmin.com/clone-your-ubuntu-installation.html
和/var/adm/apt/history.log
/var/log/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)
comm -23 <(apt-mark showmanual | sort -u) <(gzip -dc /var/log/installer/initial-status.gz | sed -n 's/^Package: //p' | sort -u)
apt-mark showmanual
这等效于您的上一个命令。
grep -i "Commandline" /var/log/apt/history.log
显示您使用以下工具安装的所有软件包: sudo apt-get install xxxxx
而不是TAC /头组合,最好使用尾部(最后25行):
tail -n 25 /var/log/apt/history.log
其他答案有所帮助,但给了我太多的输出。为了减少输出,我开始apt-mark showmanual
在这个答案,并且最初安装,然后过滤出包(见这个答案对于如何让最初安装包的列表;我使用Ubuntu 18.04.2因此下面的链接) 。
BASE_PACKAGES_MANIFEST=http://releases.ubuntu.com/18.04.2/ubuntu-18.04.2-desktop-amd64.manifest
REMOVE_VERSIONS_REGEX='[0-9][.-][0-9][.-][0-9]|[0-9][.-][0-9]|[0-9]'
paste <( apt-mark showmanual ) <( apt-mark showmanual | sed -r "s/$REMOVE_VERSIONS_REGEX//g" ) |
grep -vf <( curl $BASE_PACKAGES_MANIFEST | cut -f1 | sed -r "s/$REMOVE_VERSIONS_REGEX|:amd//g" ) |
cut -f1 |
sort |
uniq
该脚本通过进行与版本无关的比较来滤除原始清单中的软件包,以使升级的软件包不会出现在列表中。我最终得到了大约60个包裹的清单。
我喜欢的另一种方式是搜索所有apt日志的答案。
为了按降序获取最新安装的软件包列表,我喜欢使用(例如25行):
tac /var/log/apt/history.log |head --lines=25
tail -25 /var/log/apt/history.log | tac