2017-01-19 14 views
0

Ошибка при установке RPM после установки в системном вызове. Мы не видим проблем с установкой, когда пост-скрипт не упоминается в spec-файле.rpm post install скрипт не работает при использовании системы() API

* .spec.in
% после
sfile =/и т.д./ld.so.conf
если! grep '^/usr/lib' $ sfile>/dev/null 2> & 1; затем
printf "% s \ n" "/ usr/lib" >> $ sfile;
fi

Почтовый сценарий выглядит просто.

Подготовка пакетов для установки ... Readline-4.2-4 ошибка: выполнение% после скриптлете из Readline-4.2-4 не удалось, статус выхода 255

Не могли бы вы помочь нам здесь?

ret = system("/bin/rpm -ivU --nodeps --force --root /mnt /tmp/readline-4.2-4.ppc.rpm"); 

Когда мы выдаем вышеуказанную команду rpm в приглашении оболочки, мы не видим проблем.

ответ

0

У вас есть багги% пост (ну не нравился! ;-)

Попробуйте добавить «выход 0» в конце% после скриптлете. То, что, по-видимому, происходит, состоит в том, что код возврата последней выполненной команды (т. Е. Grep) возвращается в rpm как неудачный код выхода.

Обратите внимание, что вы можете довольно легко отлаживать пропущенные сценарии пакетов (хотя техника не сразу очевидна). Ищите rpm-tmp * файлы в/var/tmp: RPM не стирает расширенные скриптлеты (то есть, например, скрипты), когда скрипт терпит неудачу. Вы можете (обычно, не всегда) отлаживать сценарий, который RPM пытался запустить с помощью «sh -x», а затем распространять изменения обратно в файл * .spec

-1

Я не уверен, что не так с вашим скриптлетом. Но вы не должны изменять /etc/ld.so.conf. Вы должны просто создать и распространить файл в /etc/ld.so.conf.d/%{name}.conf

+0

Это не ответ. Это предложение и, конечно же, не проблема в реальной проблеме. – alvits