Установка src.rpm запускает% install?

1

У меня есть исходный код в source.tar, который находится в myrpm-1.0.e17.centos.src.rpm. Когда я устанавливаю rpm на моей машине.

rpm -ivh myrpm-1.0.e17.centos.src.rpm

Я получаю файл SOURCE и SPECS в корневом каталоге, который я хочу. Теперь я хочу, чтобы RPM попал в папку SOURCE, распакуйте tar файл (source.tar) и переместите его в другое место на моей машине. Я попытался помещать это в %install и %post. Кажется, что они не работают, я даже не могу сделать каталог в разделе установки.

%install 

echo "INSTALLING"

mkdir temp/myfile

tar -xvf source.tar

При установке нет сообщения, не создается файл temp, и tar не распаковывается. (То же самое, если помещено в %post).

Теги:
rpm
rpm-spec
rpmbuild

1 ответ

1

Нет, обработка содержимого RPM источника жестко запрограммирована. %pre, %post, %install и т.д. используются только при создании двоичного пакета.

В общем, вы все равно не должны так поступать. Если вам нужно распаковать исходный файл или применить исправления, просто сделайте это в разделе %pre, который выполняется как часть процесса сборки двоичного пакета до начала фактической сборки. Это гарантирует, что сборка хотя бы несколько повторяема.

Возможно, мы сможем помочь вам, если вы упомянули, в чем проблема, которую вы пытаетесь решить, сделав это...


Проясните что-то здесь. "S" в SRPM ссылается на то, что SRPM является источником, из которого встроен установленный пакет RPM, и все. Это не означает, что программы из некомпилированных пакетов устанавливаются из SRPM или что RPM содержат только двоичные файлы. Например:

  • Когда исходный код для приложения недоступен, иногда дистрибутивы будут включать двоичные исполняемые файлы в их SRPMS или загружать их в разделе %build.

  • Сценарии Python, Bash и PHP часто включаются как-в результирующий RPM. В этих случаях нет ничего необычного для того, чтобы %build был полностью пуст, а для %install просто скопировать файлы в нужное место под $RPM_BUILD_ROOT. Если результирующий пакет не имеет файлов, зависящих от платформы, то он обычно создается как .noarch RPM, но он все еще считается двоичным RPM, и это не SRPM.

Пожалуйста, пожалуйста, не злоупотребляйте SRPM для вещей, для которых они не предназначены.

  • 0
    Спасибо, он действительно отвечает на мой вопрос. Короче говоря, я хочу, чтобы исходный код был на сервере. RPM не обязан размещать код в правильном месте.
  • 2
    @ Эдди: Кажется, вы путаете исходные пакеты RPM и двоичные пакеты. Чтобы поместить файлы на ваш сервер, вам нужно rpmbuild .src.rpm, чтобы получить двоичный файл .rpm, который вы затем сможете установить ...
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню