Как прервать установку пакета rpm, если в specfile не выполняются некоторые условия?

Есть еще несколько вещей, которые Requires тег не удовлетворяет. Поэтому я написал сценарий для проверки этих вещей, но где мне их разместить? И если не найден, то я хочу выйти из установки, побуждая пользователя сделать шаги, прежде чем пытаться установить этот RPM снова.

пишу exit 1 в %install тег не может построить rpm с помощью rpmbuild. говорит %install has a bad exit code.

РЕДАКТИРОВАТЬ: позвольте мне привести вам пример. Сначала я хотел проверить, присутствует ли Oracle Java 6. Если нет, то укажите путь к Java6. Если пользователь не может предоставить один... выйдите из RPM. Выше Java не допускается, и установка не должна быть успешной без Java. Невозможно поместить его в Требуется точка, если пользователь не хочет устанавливать RPM-пакет Java.

Надеюсь, я все понял.

1 ответ

Решение

Вы можете использовать раздел%pre для такого рода задач.

Сценарий%pre выполняется непосредственно перед установкой пакета. Это редкий пакет, который требует, чтобы что-либо было сделано до установки; ни один из 350 пакетов, включающих Red Hat Linux 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
Другие вопросы по тегам