我最近接到任务,要为我的一台生产服务器(均为 12.04LTS)制作开发版本。如果我可以在我的云服务上创建映像,那就简单了。问题是,它们都托管在 2 个不同的云服务(firehost 和 azure)上。
我没有创建有问题的生产服务器,但我需要确保至少安装了所有相同的软件包。我尝试过:
dpkg --get-selections
并对两个服务器的 dpkg 进行了比较,但由于此列表包含所有已安装的依赖项,因此这是一个相当大的列表,需要一段时间才能完成分类。
我猜有两个问题:
1.) 我是否以正确的方式处理此事?
如果是,
2.) 我可以获得已安装的顶级软件包的列表吗?
答案1
如果您希望对两者进行比较,并且有一个可移动的列表,您可以这样做:
dpkg --get-selections>new.txt
这将获取您的输出并将其发送到文本文件(“new.txt”)。从那里您可以使用grep
搜索。例如:
grep '^linux*' new.txt
或者如果你只是需要软件包,可以快速将两者结合起来
dpkg --get-selections|grep '^linux*'> new.txt
单引号包含您要查找的内容,插入符号 (^) 使搜索以“linux”开头,星号 (*) 是通配符(显示 linux 之后的任何内容)。
所以linuxhappy.txt
会显示,但happylinux.txt
不会。如果您需要确切的包名称,请使用$
而不是星号。
我不确定您所说的“顶级”软件包到底是什么意思。我假设您的意思是您只想获取可以安装的程序列表,然后使用apt-get
或aptitude
或 Synaptic 解析依赖项。
在这种情况下,如果你看一下:如何列出依赖包(反向依赖)?您应该能够看到所有依赖项。如果您真的想查看每一个每个程序都有依赖关系apt-cache dump
,但是这非常长。