2011-08-15 32 views
1

我正在制作一个spec文件(foo.spec),它在构建时会产生两个RPM:foo-1-1.i386.rpm (主程序)和libfoo-1-1.i386.rpm(所需的库文件)。该foo.spec文件指出FOO需要libfoo的同一版本和发行级别:SPEC文件构建两个RPM,但依赖性使-Uvh升级不可能

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

富-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

IIRC,你可以运行'rpm -Uvh foo-2.1.i386.rpm libfoo-2-1.i386.rpm'同时升级两个版本 – Hasturkun

+0

是否可以存储所有的库libfoo)到foo RPM中,如果你想保持它如此耦合?将libfoo的版本/发行版绑定到当前版本的foo类型会挫败单独RPM的目的,因为更新一个会要求您更新其他版本。另外,要使升级示例正常工作,必须在更新libfoo之前先删除foo-1-1。或者你可以使用yum来处理所有这些:'yum update foo'。不过,这需要设置一个(本地)存储库。 –

回答

2

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

可以作为Hasturkun指出,在同一个命令来安装他们两个:

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

FWIW,如果你creaate yum软件库,并使用了更新,你会发现,自动更新一个RPM会拖动另一个。