计算安装在两台主机上的软件包之间的差异列表

krt*_*tek 12 package-management debian dpkg lxc

我只是在我的 Debian 虚拟服务器上添加了一些问题,然后从头开始重新安装所有这些问题。但是,我仍然可以访问旧版本,并且可以检索已安装软件包的列表。

为了方便以后恢复虚拟服务器的过程,我想为我的每台服务器创建一个特定包的列表。

为了更好地解释我想要实现的目标。我已经有了一个自动化过程来创建一个新的虚拟服务器,其中包含一些随处使用的基本包和配置。现在我想用这个“骨架”保存增量以简化特定服务器的重新安装。

一个真正的好处是还可以从默认值中保存更改的配置文件,但我只能使用包列表。

简而言之,我想要一种方法来创建安装在主机上但不在另一个主机上的软件包列表。

如果列表只包含手动安装的包而不包含所有依赖项的列表,那就太好了。

如果您有一些旨在完成此特定任务的现有工具,请随时提出它们,但我希望使依赖关系尽可能小。有关信息,它们不完全是虚拟服务器,而是 LXC 容器。

she*_*lic 12

在参考安装上(仅一次):

dpkg-query -W -f='${Package}\n' | sort > baselist.txt
Run Code Online (Sandbox Code Playgroud)

(以下假设bash

要从参考安装中添加包(这不显示已删除的内容):

comm -1 -3 baselist.txt <(dpkg-query -W -f='${Package}\n' | sort)
Run Code Online (Sandbox Code Playgroud)

更好的是,避免复制baselist.txt

comm -1 -3 <(ssh user@refserver cat /path/to/baselist.txt) <(dpkg-query -W -f='${Package}\n' | sort)
Run Code Online (Sandbox Code Playgroud)