我正在研究一个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升级包的所有部分?
提前致谢。
答案 0 :(得分:2)
rpm不应该也不允许您单独更新这些RPM,因为安装第一个RPM和第二个RPM之间的状态无效。
正如Hasturkun指出的那样,你可以在同一个命令中安装它们:
rpm -Uvh libfoo-2-1.i386.rpm foo-1-1.i386.rpm
FWIW,如果你创建了一个yum repo并用它进行更新,你会发现更新一个RPM会自动拖动另一个。