RPM生成规范文件:我想检查RPM软件包是否正在安装或更新。

5

我想要检查用户(客户端)是否已经安装或更新了我创建的rpm包。

rpm -ivh abc.rpm

或者
rpm -Uvh abc.rpm

在spec文件中是否有任何%command可以获取有关此命令的信息。

我的要求是,如果我有一个名为abc-0.1-2.rpm的rpm包,并且现在用户想要在安装abc.0.1-1.rpm之前使用以下命令进行安装 rpm -ivh abc.0.1-2.rpm 那么它允许安装, 或者用户可以使用以下命令直接更新rpm rpm -Uvh abc.0.1-2 在安装旧版本之前,请停止这样做。

2个回答

10

对上述内容进行拓展:

在您的%post[un]%pre[un]部分,有一个变量可以检查此软件包是否已经存在于系统中(正在更新/清理升级)或者不是(首次安装/最终卸载)。

它看起来像这样:

%post
if [ $1 -eq 1 ]; then
    echo "First install complete"
else
    echo "Upgrade complete"
fi

1
您的%pre[un]%post[un]脚本会给出“表示当前系统上已安装的软件包实例数量的数字,安装或删除当前软件包后”,这将告诉您RPM是否已安装。请参见Maximum RPM的此部分

%postun是什么情况?如何检测软件包是否被用户删除,而不是由rpm升级到另一个版本?在这种情况下,$1变量会有什么值? - nolimit
1
然后你会得到 0,就像参考文献中所解释的那样。 - Aaron D. Marasco

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接