在虚拟rpm包中提供rpm包

时间:2015-02-02 18:18:42

标签: version-control package rpm buildroot

我想在虚拟RPM包中提供一些不包含文件的RPM包。

案例是,我创建了一个带有buildroot的嵌入式系统,然后RPM负责版本控制。出于这个原因,buildroot映像总是在物理上拥有最新的RPM包内容,但有人应该告诉RPM它们已经存在。

我知道这些文件可以在基本虚拟包中提供,并提供:' RPM spec文件中的关键字。我想在rpm包中提供包含版本号而不是单个文件的包。

实施例

App1.0-1.rpm requires lib3.0-4.rpm and they already exist on my
package server. The buildroot image already includes files that
lib3.0-4.rpm provides. I want to define a package with name
buildrootbase2.0-1.rpm parallel to my root file system image that
prevents reinstallation of lib3.0-4.rpm while App1.0-1.rpm is
installed.

1 个答案:

答案 0 :(得分:1)

Provides:更常用于包而不是文件,它支持版本检查:

Provides:        foo-bar = 2.1.3-2b

第二个问题更难回答。您将需要使用触发器来完成您要执行的操作。

触发器有一些特殊的语法,旨在让您根据现有软件包以及安装/卸载目标软件包之前和之后rpmdb的状态来控制何时以及如何操作

我不知道使用触发器的好教程,但是你可以阅读这篇PDF文章,它将它们用于某些事情"不寻常",解释它们在这个过程中是如何工作的:

http://www.redhat.com/promo/summit/2010/presentations/summit/opensource-for-it-leaders/thurs/pwaterma-2-rpm/RPM-ifying-System-Configurations.pdf

actulal触发解释从第23页开始