是否存在另一种方法来标识rpm规范文件中的rpm命令使用的参数或自变量

时间:2019-08-14 11:29:25

标签: linux rpm packaging

在rpm规范文件中,我需要确定用户已使用rpm -ivhrpm -Uvh。通常,$1的值将在%pre中进行验证。但是在我的新rpm中,我们正在修改安装位置。在这种情况下,检查$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的情况下删除文件,但是在我的情况下,当我将路径更改为rpm时,在两种情况下都设置为true,并且$1的值仅显示2。如果rpm没有安装路径,则代码可以正常工作。

1 个答案:

答案 0 :(得分:1)

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

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

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