Мой проект должен иметь файл спецификации в своем каталоге (следовательно, он не находится в SPECS
каталог), который может быть использован для создания пакета RPM из пакета с make rpm
,
Сам проект является приложением Symfony. Следовательно при установке пакета 3 вещи должны происходить:
/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
должно быть в этом случае и про разрешения.
Увидеть Создание RPM-пакетов с помощью Fedora, где вы можете увидеть хорошее описание каждой фазы rpmbuild (это понимание полезно, даже если вы не делаете пакет для Fedora).
Тем не менее, быстрый ответ: вам понадобится %prep
раздел, где вы можете извлечь исходный архив через %setpu -q
макрос (тарбол находится в Source: dist.tar.gz
). Кажется, что вы можете пропустить %build
раздел. В %install
раздел, вам нужно сначала создать все каталоги, которые вам нужны, а затем скопировать (установить) все файлы в нужное место (вам нужно использовать $RPM_BUILD_ROOT
префикс в пути назначения вместо абсолютного пути, который вы используете в своем примере). И последнее, но по крайней мере, в %files
вам нужно перечислить все файлы, которые вы установили в %install
раздел, который вы хотите быть частью пакета RPM.
Других решений пока нет …