在rpm规范文件中,我需要确定用户已使用rpm -ivh
或rpm -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没有安装路径,则代码可以正常工作。
答案 0 :(得分:1)
您不应检查命令行参数。未安装该名称的软件包时,rpm -U
的行为与rpm -i
完全相同。
$1
变量是此名称的软件包数,操作完成后将留在系统上。有关完整的可能值,请参见:
https://docs.fedoraproject.org/en-US/packaging-guidelines/Scriptlets/#_syntax
也请不要从scriptlet调用rpm。 RPM不可重入。迟早会破坏rpmdb。