7

我正在构建现有 .spec/rpm 的新版本,我想删除不再需要的依赖项(以前的 .spec 有“需要: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 数据库以删除它们。

所以问题是:我是否允许从规范文件中调用 rpm 命令?我已阅读过时的标签,但它不会删除 rpm。删除 rpm 的最佳方法是什么?

谢谢,

-马丁

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

4

1 回答 1

12

不,您不能在 .spec 文件中的脚本内运行 rpm(无论是 %post 还是其他)。你可以做的是放一条线

Obsoletes: rpm-xyv <= VERSION

在您的 .spec 文件中。然后 Yum 将继续删除另一个包。

请参阅http://yum.baseurl.org/wiki/YumPackageUpdates以获取有关如何处理包重命名等的更多建议。

于 2011-08-12T09:36:28.090 回答