首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从%posttrans验证刚刚安装的RPM是否安全?

从%posttrans验证刚刚安装的RPM是否安全?
EN

Stack Overflow用户
提问于 2015-06-26 17:42:01
回答 1查看 222关注 0票数 0

我知道这是非标准的,但它的目的是克服专有发行版的短期问题。因为存在我们的部署系统所独有的依赖项,所以我们必须从%post编译一些库。因为这里的失败可能会导致RPM数据库的损坏,我们静默地失败,或者更准确地说,我们成功地失败了:-/

使用%verifyscript,我们能够验证编译是否未完成,然后适当地退出。我们的想法是我们可以这样做:

代码语言:javascript
复制
rpm -Uvvvh proprietary-dist-1.0-2.i686.rpm
rpm --verify proprietary-dist || rpm -Uvvvh proprietary-dist-1.0-1.1686.rpm

或者像这样:

代码语言:javascript
复制
rpm -Uvvvh proprietary-dist-1.0-2.i686.rpm
rpm --verify proprietary-dist || rpm --rollback proprietary-dist

但是,利用%posttrans,我认为我们可以将其简化为:

代码语言:javascript
复制
rpm -Uvvvh proprietary-dist-1.0-2.i686.rpm || rpm --rollback proprietary-dist

从文档中似乎不清楚从%posttrans中退出非零值是否安全并且不会导致RPMDB损坏-好吧,至少在引入%pretrans和%posttrans之前不应该退出非零值的文档是这样的。

我假设%posttrans是在RPMDB更新并提交之后运行的,所以实际上,RPM被认为是已安装的。但这是一个糟糕的假设吗?

EN

回答 1

Stack Overflow用户

发布于 2015-06-30 23:18:27

是的,您是正确的,%posttrans是在rpmdb更新之后运行的(在您可能使用的rpm中没有commit )。同时,rpmdb仍处于打开状态,通常会禁用fsync(2) (出于性能考虑)。

来自%posttrans的非零值充其量被忽略,否则将留下一个“不成功”的部分安装,需要手动“修复”。

YMMV.如果rpm使用%posttrans中断,您可以保留所有部分。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31069879

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档