我想在一个虚拟的RPM包中提供一些不包括文件的RPM包。
情况是,我用buildroot创建了一个嵌入式系统,然后RPM负责版本控制。由于这个原因,buildroot镜像在物理上总是有最新的RPM包内容,但是应该有人告诉RPM它们已经存在了。
我知道这些文件可能是在一个基本的虚拟包中提供的,在RPM规范文件中使用'Provides:‘关键字。我想提供带有版本号的包,而不是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.发布于 2015-02-10 04:11:22
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
实际触发器的解释在第23页左右开始。
https://stackoverflow.com/questions/28284143
复制相似问题