4

我想检查我创建的 rpm 是由用户(客户端)安装还是更新,例如

rpm -ivh abc.rpm

或者

rpm -Uvh abc.rpm

是他们在规范文件中的任何 %command 以获取有关此命令的信息。

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

4

2 回答 2

8

扩展上述内容:

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

它看起来像这样:

%post
if [ $1 -eq 1 ]; then
    echo "First install complete"
else
    echo "Upgrade complete"
fi
于 2014-03-13T19:59:07.337 回答
1

%pre[un]%post[un]脚本被赋予“一个数字,代表当前安装在系统上的包的实例数,在当前包被安装或删除之后”,以便告诉你当前是否安装了 RPM。请参阅最大 RPM 的这一部分

于 2012-12-06T09:54:30.563 回答