如何在openSUSE的另一台计算机上安装完全相同的软件包?


8

另一台计算机也可以是虚拟机。由于硬件差异和设置,我无法进行磁盘克隆。

我有计算机A,已安装并正在运行,也有计算机B。我将在B上安装相同的OS,因此我将获得相同的基本系统。

然后,我将手动添加与A相同的存储库。

但是最后一步超出了我-如何安装与A相同的软件包?请注意,版本必须匹配,而不仅仅是软件包名称。

当然,我正在寻找自动方式,而不是一步一步地手动安装。

实际上,我应该获得完全不同的硬件配置,干净的设置(没有旧密码等),但软件选择相同。

怎么做?

背景

软件包(每个版本)可用,但不是最新的。这样做的目的是制作正在运行的系统的“副本”,在计算机B上升级软件包(副本),测试是否正常,如果是,然后升级A。在每个新的OS版本中,我都会遇到许多回归错误,并且我必须比现场测试和恐慌更系统地测试它。

openSUSE 11.4


计算机A的软件包是否已从存储库更新为最新版本?(我问是因为它可以使答案更短,使您的生活更轻松)。
Hanan N.

@Hanan N.,不,我知道这会更容易,这就是为什么我指出确切版本的原因。
greenoldman 2011年

Answers:


3

听起来您必须构建自己的存储库。

将所需版本的RPM放入该存储库。然后在两台计算机上激活这些存储库(作为安装源)并安装软件包。


谢谢,我还没有将其标记为解决方案(因为),因为也许有人会想出另一种方法-例如,列出列表(rpm -qa)并将这些软件包以给定版本安装在另一台计算机上。但是,您的方法可以更好地扩展(每个软件包一次下载)。
greenoldman 2011年

2

就像OpenSuse使用RPM一样,您可以使用该rpm实用程序。

rpm -qa将列出系统上当前所有已安装的软件包(很长的列表)。该列表包括软件包名称,版本号和体系结构。您可以将列表写入文件,然后在新系统上为zypper提供文件。

可能会有默认情况下已经安装了多个软件包,但是zypper会跳过它们并安装您需要的软件包。


好吧,您只是复制了我的评论,所以我们在总体上同意,但是细节在于细节-您如何强制zypper不安装软件包P,而是安装P-1.23,即给出版本?因为这在这里至关重要(默认情况下,rpm的输出与zypper的输入格式不兼容)。
greenoldman 2011年

作为记录,我在发布您的评论之前或您在写我的答案时发布了此评论。对于zypper,是的,您可以将的输出rpm -qa用作的输入zypper。它完全了解软件包的格式。我尚未测试过是否遵循版本号,但这在很大程度上取决于存储库是否包含较早的版本。如果存储库没有,那么您将无能为力。
n0pe 2011年

您自相矛盾,“我尚未测试过它是否符合版本号”,但“它完全理解软件包的格式”。因此,我要澄清一下-它不支持rpm输出。为了指定版本,您必须添加量词,这是一个棘手的部分,因为程序包的命名仅是约定俗成的,它不受任何验证程序的强制。请参阅:en.opensuse.org/SDB
greenoldman 2011年

1

首先列出您要在其中创建“克隆”的计算机中所有已安装的软件包及其版本rpm -qa > /tmp/rpm.list.txt

然后将拷贝/tmp/rpm.list.txt到要转换为另一个系统的“克隆”系统,并运行zypper并将刚创建的软件包列表提供给它:(zypper install $(cat /tmp/rpm.list.txt)或将包含源系统软件包列表的文件放到任何地方)。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.