我正在构建一个现有的.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依赖它。
答案 0 :(得分:12)
不,您无法在.spec文件中的scriptlet中运行rpm(无论是%post还是其他内容)。你可以做的就是设置像
这样的行Obsoletes: rpm-xyv <= VERSION
在你的.spec文件中。然后百胜将继续删除其他包。
有关如何对程序包重命名执行操作的更多建议,请参阅http://yum.baseurl.org/wiki/YumPackageUpdates