gpt4 book ai didi

centos - 在 rpm 包的 %pre 部分出错时 rpm 命令的奇怪行为

转载 作者:行者123 更新时间:2023-12-04 19:37:57 29 4
gpt4 key购买 nike

我有几个版本的一些包。最后一个在终止安装脚本的 %pre 部分中有一个错误:

mypak-0.0.1-1.el6.noarch.rpm
mypak-0.0.1-2.el6.noarch.rpm
mypak-0.0.1-3.el6.noarch.rpm <-- bad package

我所有的软件包在 pre 中都有调试输出, post , preunpostun部分。

我安装第一个包:
rpm -Uhv mypak-0.0.1-1.el6.noarch.rpm

输出(参数是传递给脚本部分的参数)是:
Preparing...                ########################################### [100%]
pre: 0.0.1-1.el6 ; param = 1
1:mypak ########################################### [100%]
post: 0.0.1-1.el6 ; param = 1

然后我尝试更新我的包并(不小心)一次使用所有包启动 rpm 命令:
rpm -Uhv mypak-0.0.1-*                
warning: package mypak = 0.0.1-1.el6 was already added, replacing with mypak > 0.0.1-2.el6
warning: package mypak = 0.0.1-2.el6 was already added, replacing with mypak > 0.0.1-3.el6
Preparing... ########################################### [100%]
pre: 0.0.1-3.el6 ; param = 2
!!!version 3 is bad!!!
error: %pre(mypak-0.0.1-3.el6.noarch) scriptlet failed, exit status 1
error: install: %pre scriptlet failed (2), skipping mypak-0.0.1-3.el6
preun: 0.0.1-1.el6 ; param = 0
postun: 0.0.1-1.el6 ; param = 0

如您所见,我的包裹最终被删除了。此外,即使其他包依赖于它,该包也会被删除。我什至没有收到有关损坏的依赖项的任何警告!

如果我一个接一个地安装我的包,我就没有这个问题。在这种情况下,第三个软件包的安装失败,仅此而已。我的包的以前版本仍然存在。

我认为这确实是一种奇怪的行为。它是 rpm 中的错误还是我遗漏了什么?

我在 Centos 6.5 上使用 rpm 4.8.0。

最佳答案

安装时,RPM 将忽略(通过替换新版本)同名软件包的旧版本。重命名一些包,或者不要在同一个事务中安装同名包的多个版本

升级时的 %pre 失败很棘手。如果 %pre 失败,则不会安装较新的软件包。并且(在已安装旧版本的升级时)将删除已安装的软件包。这里最好的答案是在安装时不要依赖 %pre failures in package 。而是添加提供:/需要:
以便在依赖检查期间发生包(和事务)失败,或者设计一种不同于 %pre 的动态属性测试方法,
无论是在配置中,还是在文档中,或者通过重命名和废弃以前的包来获得更可靠的包。

关于centos - 在 rpm 包的 %pre 部分出错时 rpm 命令的奇怪行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29565224/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com