Как прервать установку пакета 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