我即将将服务器从一个 Ubuntu 机器移到另一个机器上。我不是将旧盒子克隆到新盒子;我正在创建一个新系统,并将根据需要移动数据。我想将旧盒子上的所有软件安装到新盒子上。
有没有一种简单的方法可以找到我随时间给出的所有“sudo apt-get install”命令的历史记录?也就是说, dpkg -l 向我显示所有已安装的软件包,但不显示安装了它们的顶级软件包。如果dpkg有办法给我安装包,我可以在那里找到唯一的;否则,我想说“你安装了这 24 个软件包”。
rap*_*ink 95
在apt历史上是/var/log/apt/history.log如上评论说。也就是说,这不会列出手动安装的软件包,使用dpkg或 GUI 之类的gdebi. 要查看所有经过的包dpkg,您可以查看/var/log/dpkg.log.
Gil*_*il' 12
您可以使用 列出已明确请求安装的软件包apt-mark。
apt-mark showmanual
Run Code Online (Sandbox Code Playgroud)
如果您正在运行一个古老的 Debian 版本,这里有一种手动方式。
以下命令提供了已请求安装的软件包列表,无论是手动安装还是自动安装。除非您正在(卸载)安装软件包,否则这是已安装软件包的列表。
dpkg --get-selections | sed -n 's/\t\+install$//p'
Run Code Online (Sandbox Code Playgroud)
以下命令提供了自动安装的软件包的超集:
</var/lib/apt/extended_states awk -v RS= '/\nAuto-Installed: *1/{print$2}'
Run Code Online (Sandbox Code Playgroud)
总而言之,以下命令列出了手动安装的软件包:
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)
Run Code Online (Sandbox Code Playgroud)
小智 8
http://www.debianadmin.com/clone-your-ubuntu-installation.html
和 /var/adm/apt/history.log
我还以这种方式“greping” tar.gz -ed 历史文件:
zgrep -E "Commandline: apt(|-get) install" /var/log/apt/history.log*
Run Code Online (Sandbox Code Playgroud)
如果你也需要时间戳,只需添加一个额外的参数-B1。
| 归档时间: |
|
| 查看次数: |
119068 次 |
| 最近记录: |