Создание пакета rpm с использованием make из исходного кода PHP

Мой проект должен иметь файл спецификации в своем каталоге (следовательно, он не находится в SPECS каталог), который может быть использован для создания пакета RPM из пакета с make rpm,

Сам проект является приложением Symfony. Следовательно при установке пакета 3 вещи должны происходить:

  • скопируйте приложение по назначению (желательно в правильный каталог apache2)
  • скопировать файл конфигурации в /etc/appname/
  • создать каталог для файлов журнала в /var/log/appname

Приложение может быть построено с make dist, который создает приложение и создает dist.tar.gz файл потом.

Насколько я понял rpmbuild этого должно быть достаточно для реализации %install раздел моего спецификации файла. Но моя проблема в том, что в этом разделе я нахожусь внутри ~/rpmbuild каталог, в котором не живет ни мое заархивированное приложение, ни мой исходный код. Просто cd чтобы другой каталог не работал, так как я не знаю, где был вызван файл спецификации (и остальная часть проекта).

Я хочу что-то вроде этого:

Name: appname
# rest of the header (group, summary, ...)

Source: dist.tar.gz

Requires: php >= 7.0, apache2

%description
important words

%install
cp * /var/www/appname # copy the application to its destination
cp docs/config/example /etc/appname/ # copy config to its destination
mkdir -p /var/log/appname # create log directory

Кроме того, я не уверен, что мой %files должно быть в этом случае и про разрешения.

1

Решение

Увидеть Создание RPM-пакетов с помощью Fedora, где вы можете увидеть хорошее описание каждой фазы rpmbuild (это понимание полезно, даже если вы не делаете пакет для Fedora).

Тем не менее, быстрый ответ: вам понадобится %prep раздел, где вы можете извлечь исходный архив через %setpu -q макрос (тарбол находится в Source: dist.tar.gz). Кажется, что вы можете пропустить %build раздел. В %install раздел, вам нужно сначала создать все каталоги, которые вам нужны, а затем скопировать (установить) все файлы в нужное место (вам нужно использовать $RPM_BUILD_ROOT префикс в пути назначения вместо абсолютного пути, который вы используете в своем примере). И последнее, но по крайней мере, в %files вам нужно перечислить все файлы, которые вы установили в %install раздел, который вы хотите быть частью пакета RPM.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]