我可以从.spec脚本部分中删除RPM吗?

时间:2011-08-11 15:33:54

标签: rpm yum specifications

我正在构建一个现有的.spec / rpm的新版本,我想要删除不再需要的依赖项(之前的.spec有“Requires:rpm-xyz”)。

所以除了删除Requires:rpm-xyz之外,我在.spec文件的“%post”部分添加了以下内容:

rpm -e rpm-xyz。

当我使用yum安装生成的rpm时,在下载它并向我询问已处理的确认后,我得到了这一行并且它永远停留在那里:

警告:在/ var / lib / rpm / __ db.000

上等待事务锁定

所以它看起来像是一个死锁(yum调用rpm,然后从内部调用rpm)。所以我在/ var / lib / rpm中有__db.oox文件,我需要重建rom数据库来删除它们。

所以问题是:我允许从spec文件中调用rpm命令吗?我已经阅读了Obsolete标签,但它没有删除rpm。删除rpm的最佳方法是什么?

谢谢,

-Martin

P.S。额外信息:是的,我需要删除旧的依赖项,不,没有其他rpm依赖它。

1 个答案:

答案 0 :(得分:12)

不,您无法在.spec文件中的scriptlet中运行rpm(无论是%post还是其他内容)。你可以做的就是设置像

这样的行
Obsoletes: rpm-xyv <= VERSION

在你的.spec文件中。然后百胜将继续删除其他包。

有关如何对程序包重命名执行操作的更多建议,请参阅http://yum.baseurl.org/wiki/YumPackageUpdates