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

Bas*_*wer 2 java linux rpm rpmbuild rpm-spec

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

exit 1%install标签构建失败,使用的rpmbuild转速.说%install has a bad exit code.

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

希望我明白我的观点.

gui*_*ido 6

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

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

一些指导,让你开始; 脚本内容(在%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
Run Code Online (Sandbox Code Playgroud)