关于RPM升级

时间:2011-12-13 16:17:18

标签: linux rpm

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。

请让我知道如何解决这个问题。

2 个答案:

答案 0 :(得分:0)

从我所看到的,你不能。找一些其他方式。例如,当已经存在的和要安装的软件包都存在冲突的文件时,尝试使用-i通常会停止安装。

答案 1 :(得分:0)

RPM将从不安装两个版本的相同rpm软件包,这些软件包仅在版本/发行版中有所不同(除非您有一些旧的/错误的版本)。现在我假设这是你想要的:

  

我有rpm包,安装后和升级后应该做一些不同的事情。例如,首次安装时安装数据库,否则更新它。

这意味着以下几点之一:

  1. 您正在尝试自动升级应由管理员和/或程序本身更新的内容。程序生成的文件应该被包裹触及。的自从
  2. 您应该在%config部分将这些文件标记为%files,并让管理员将xxx.rpmnew文件与用户编辑的文件合并
  3. 换句话说,rpms应该只触及它自己创建的内容,知道它们包含的内容,并将其与数据库/其他来源或可靠信息进行比较。这似乎不是你的情况