如果specfile中没有满足某些条件,如何中止rpm包的安装?

时间:2013-01-23 05:11:51

标签: java linux rpm rpmbuild specfiles

Requires标记还有一些不满足的内容。 所以我写了一个脚本来验证这些东西,但我在哪里放置它们? 如果没有找到,那么我想退出安装,提示用户在尝试再次安装此rpm之前执行这些步骤。

exit 1标记中编写%install无法使用rpmbuild构建rpm。 说%install has a bad exit code.

编辑:让我举个例子。我最初想要测试的是Oracle Java 6是否存在。如果没有,那么提供Java6的路径。如果用户未能提供一个...退出RPM。不允许使用更高的Java,如果没有java,安装不应该成功。如果用户不想安装java rpm软件包,则无法将其置于需要点。

希望我明白我的观点。

1 个答案:

答案 0 :(得分:6)

您可以将%pre部分用于此类任务。

  

%pre脚本在安装包之前执行。   这是一个罕见的包,需要在此之前完成任何事情   安装;没有包含Red Hat Linux的350个软件包   Linux 4.0使用它。

一些帮助您入门的指南;脚本内容(未在%pre部分中使用)来自jpackage-utils,你会在那里找到一些其他很好的脚本示例:

  %pre
  # try to find jvm from java command

  # try javac first, or we might get the location of the jre instead - djw
  java=`which javac 2>/dev/null || :`

  # if we don't have the jdk, then maybe we have the jre - djw
  if [ -z "$java" ] ; then
    java=`which java 2>/dev/null || :`
  fi

  if [ -n "$java" ] ; then
    while [ -h "$java" ] ; do
      java=`readlink $java 2>/dev/null`
    done
    return
  fi

  echo "Can't find java virtual machine, aborting."
  exit 1