Я создаю установщик rpm для веб-приложения php. Одно из требований - запустить php-скрипт, входной скрипт, который обновит источник, базу данных и выполнит скрипты исправления.
Чтобы выполнить это требование, я создал файл tar, в котором есть скрипт php и другие файлы, необходимые для обновления, и сохранил его в каталоге источников. И мне просто нужно было вызвать php-скрипт на% post.
%post
cd $RPM_BUILD_ROOT
gunzip %{name}-%{version}.tar
tar -xvf %{name}-%{version}.tar
php install.php
Я сначала меняю каталог для сборки, так как я думаю, что это расположение файлов tar. Затем распакуйте файлы и выполните скрипт php. Но вместо этого я получил следующие ошибки:
gunzip: can't stat: webapp-1.0.tar (webapp-1.0.tar.gz): No such file or directory
tar: Error opening archive: Failed to open 'webapp-1.0.tar'
Could not open input file: install.php
Как мне выполнить скрипт php? Это возможно?
Также какой файл rpm я должен использовать для установки для окончательного распространения, тот, который находится в каталоге rpms / i386 или srpms? Я все еще разрабатываю обороты.
Любая помощь приветствуется.
[EDIT] Я пытался использовать %setup -c -n %{name}
на% post вместо команд tar. Потом я получил это сообщение Could not open input file: install.php
если это файл .spec, используйте% {buildroot} вместо $ RPM_BUILD_ROOT. См. Главу «Макросы» здесь: https://fedoraproject.org/wiki/How_to_create_an_RPM_package
Также попробуйте echo %{buildroot} > /tmp/dbg.txt
и проверьте содержимое /tmp/dbg.txt, чтобы узнать, где он пытается выполнить cd.
Предлагаю попробовать использовать fpm который может собирать все виды пакетов. Просто предоставьте сценарии предварительной установки в качестве аргументов вместе с остальными. Никаких файлов спецификаций rpm или файлов правил deb не требуется.