首页 > 解决方案 > 是否有另一种方法来识别与 rpm 规范文件中的 rpm 命令一起使用的参数或参数

问题描述

在 rpm 规范文件中,我需要识别用户使用过rpm -ivhrpm -Uvh. 一般来说,$1值将在%pre. 但在我的新 rpm 中,我们正在修改安装位置。在这种情况下,when is check$1显示 和 的值-ivh相同-Uvh

%pre
     if [ "$1" -ge 2 ]; then
           legacy_exist=true
     if legacy_exist; then
           rm -rf *.txt
     else
           mkdir xxx
     fi
pre

%pre
     if [ "$1" -ge 2 ]; then
           legacy_exist=false
     if legacy_exist; then
           rpm -e xxx
     else
           mkdir xxx
     fi
pre

我希望仅在使用 -Uvh 的情况下删除文件,但在我的情况下,当我在两种情况下都设置为 true 时更改了 rpm 路径并且$1值仅显示 2。如果 rpm 没有更改安装路径,则代码可以正常工作。

标签: linuxrpmpackaging

解决方案


您不应该检查命令行参数。行为与没有安装该名称的包时rpm -U完全相同。rpm -i

$1变量是操作完成时将留在系统中的具有此名称的包的数量。有关完整的可能值集,请参阅: https ://docs.fedoraproject.org/en-US/packaging-guidelines/Scriptlets/#_syntax

并且请不要从 scriptlet 调用 rpm。RPM 不可重入。迟早你会破坏 rpmdb。


推荐阅读