如何比较两台机器之间已安装的Linux软件包

4
我需要显示一个Linux软件包列表,这些软件包在“构建机器”和各种“开发人员机器”之间的版本不同,这些机器随着时间的推移可能会与构建VM不同步。
通过执行“dpkg -l”命令来获取黄金VM上已安装的软件包的文本转储,然后在两个列表上执行“diff”或“awk grep”等操作,我可以取得很大进展,但我想知道是否已经有一个工具比我编写脚本更好地完成此任务。
你们是如何做到的?
Jean-Pierre
1个回答

9
我刚刚编写了这个脚本,它还可以比较软件包的版本号: https://github.com/lepe/scripts/blob/master/compare_ubuntu_apt.pl 使用方法: 1)在两台计算机上生成软件包列表,例如:
apt --installed list | tail -n+2 > that_server.lst

2) 执行perl脚本:

./compare_ubuntu_apt.pl this_server.lst that_server.lst

结果:(示例)

----------------------------------
 DIFFERENCES 
----------------------------------
 @ apparmor : 2.8.95~2430-0ubuntu5.2 -> 2.8.95~2430-0ubuntu5.3
 @ apt : 1.0.1ubuntu2.8 -> 1.0.1ubuntu2.10
 @ apt-transport-https : 1.0.1ubuntu2.8 -> 1.0.1ubuntu2.10
 @ apt-utils : 1.0.1ubuntu2.8 -> 1.0.1ubuntu2.10
 @ base-files : 7.2ubuntu5.2 -> 7.2ubuntu5.3
 @ bash-completion : 1:2.1-4 -> 1:2.1-4ubuntu0.1
----------------------------------
 MISSING IN this_server.lst
----------------------------------
 + acl : 2.2.52-1
 + acpid : 1:2.0.21-1ubuntu2
 + apport : 2.14.1-0ubuntu3.11
 + apport-symptoms : 0.20
 + at : 3.1.14-1ubuntu1
 + at-spi2-core : 2.10.2.is.2.10.1-0ubuntu1
 + attr : 1:2.4.47-1ubuntu1
 + autotools-dev : 20130810.1
----------------------------------
 MISSING IN that_server.lst
----------------------------------
 - apcupsd : 3.14.10-2build1
 - apcupsd-doc : 3.14.10-2build1
 - beep : 1.3-3
 - btrfs-tools : 3.12-1
 - discover : 2.1.2-5.2ubuntu1

非常感谢您,lepe。有趣的方法。非常有用 :) - Jeepster

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接