RPM负责安装旧版本以及相同版本的场景。
如果我执行update
而不是在旧版本存在时安装新版本,那么它会更新软件包,所以这里没有问题。
但是当我在旧版本存在时尝试install
新版本时,RPM会分别安装新版本,因此会存在两个版本。
我想通过检入%pre
部分,在我的规范文件中存在旧版本时停止新版本的安装。我怎么知道在我的spec文件中调用rpm -ivh
或调用rpm -Uvh
?
if [ "$1" = "1" ]; then
echo Perform tasks to prepare for the initial installation
elif [ "$1" = "2" ]; then
echo You already have old version Please use -U to upgrade.
fi
"$1" = "2"
对于旧安装和升级时的新安装均为true。
请让我知道如何解决这个问题。
答案 0 :(得分:0)
从我所看到的,你不能。找一些其他方式。例如,当已经存在的和要安装的软件包都存在冲突的文件时,尝试使用-i通常会停止安装。
答案 1 :(得分:0)
RPM将从不安装两个版本的相同rpm软件包,这些软件包仅在版本/发行版中有所不同(除非您有一些旧的/错误的版本)。现在我假设这是你想要的:
我有rpm包,安装后和升级后应该做一些不同的事情。例如,首次安装时安装数据库,否则更新它。
这意味着以下几点之一:
%config
部分将这些文件标记为%files
,并让管理员将xxx.rpmnew文件与用户编辑的文件合并换句话说,rpms应该只触及它自己创建的内容,知道它们包含的内容,并将其与数据库/其他来源或可靠信息进行比较。这似乎不是你的情况