SPEC文件构建两个RPM,但依赖性使得-Uvh升级成为不可能

时间:2011-08-15 14:41:53

标签: linux rpm rpmbuild

我正在研究一个spec文件(foo.spec),它在构建时产生两个RPM: foo-1-1.i386.rpm (主程序)和 libfoo-1-1.i386.rpm (所需的库文件)。 foo.spec文件指出foo需要在相同版本和发行版级别的libfoo:

Requires: libfoo = %{version}-%{release}

foo-1-1安装得很好:

rpm -ivh libfoo-1-1.i386.rpm

安装依赖库,然后:

rpm -ivh foo-1-1.i386.rpm

但升级到较新版本(foo-2-1)不起作用,因为它依赖于库:

$ rpm -Uvh libfoo-2-1.i386.rpm
error: Failed dependencies:
       libfoo = 1-1 is needed by (installed) foo-1-1.i386

$ rpm -Uvh foo-2-1.i386.rpm
error: Failed dependencies:
       libfoo = 2-1 is needed by foo-2-1.i386

所以我被困住了。我希望用户能够使用rpm -Uvh来升级foo包(要求他们忽略依赖关系等等,这对新手用户的要求太高了。)

有关如何解决此问题的任何想法,以便在新版本可用时使用rpm -Uvh升级包的所有部分?

提前致谢。

1 个答案:

答案 0 :(得分:2)

rpm不应该也不允许您单独更新这些RPM,因为安装第一个RPM和第二个RPM之间的状态无效。

正如Hasturkun指出的那样,你可以在同一个命令中安装它们:

rpm -Uvh libfoo-2-1.i386.rpm foo-1-1.i386.rpm

FWIW,如果你创建了一个yum repo并用它进行更新,你会发现更新一个RPM会自动拖动另一个。