2014-10-27 79 views
1

我需要显示一个Linux版本的软件包列表,这些软件包在“构建机器”和各种“开发人员机器”之间的版本会有所不同,这些软件包可能随着时间的推移而不同于构建VM。如何在两台机器之间比较已安装的Linux软件包

我可以通过执行“dpkg -l”来获得相对于其他盒子安装在金色虚拟机上的文件的文本转储,然后执行像“diff”或“awk grep”两个清单,但我想知道是否已经有一个工具比我为这份工作编写脚本做得更好。

你们如何做到这一点?

让 - 皮埃尔·

回答

1

我只是编码这个脚本,与之相比,还包版本:

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 
+0

非常感谢您Lepe的。有趣的方法。非常有用:) – Jeepster 2015-09-15 15:11:05

+0

@Jeepster:不客气。我很高兴它的用处。 – lepe 2015-09-16 00:41:03

相关问题