2

Я впервые создал пакет RPM. Этот RPM представляет собой упакованное внешнее приложение, и для установки требуется только переместить файлы приложения и выполнить перезапуск nginx. Это мой файл спецификаций:

Name:           my-portal-app

Version:        2.1

Release:        1%{?dist}

Summary:        Descripcion

License:        No-license

URL:            nourl

Source0:        my-portal-app-2.1.tar.gz

%description
My app install

%prep
%setup -q


%build
#%configure
#make %{?_smp_mflags}

%install
#rm -rf $RPM_BUILD_ROOT
cp -r ./* /var/www/myapp
service nginx restart

%clean
rm -rf $RPM_BUILD_ROOT

%files
%defattr(-,root,root,-)
%doc

%changelog

Все нормально, когда я запускаю rpmbuild -ba, выход 0, и вычисляется последовательность% install (скопируйте файлы и перезапустите nginx). Хорошо, rpmbuild генерирует RPM (в rpmbuild/RPMS) и SRPM в (rpmbuild/SRPMS).

Но, если я хорошо понимаю, когда я устанавливаю свой SRPM с rpm -ivh name.rpm, должна выполняться последовательность% install, я прав? Если я, последовательность не выполняется (не копировать файлы в /var /www /myapp и не перезапускать nginx). Выполнение RPM тоже самое.

Содержимое SRPM правильное, все файлы находятся в. И RPM пуст.

2 ответа2

2

Как вы сказали, раздел %install предназначен для настройки начальных предложений сборки RPM, которые вам нужно будет настроить.

Для достижения вашей цели вы должны использовать %post section, в котором вы можете определить выполнение своего собственного .sh (например) или вы можете установить одно за другим нужные вам предложения, например:

sudo service restart nginx

Из-за того, что пустой пакет RPM вызван неправильным заполнением раздела %files , двоичные файлы, перемещенные в RPM, связаны с содержимым этого раздела (% files).

1

Хорошо, я был неправ ... как этот документ говорит:

Раздел% install не запускается, когда бинарный пакет RPM установлен конечным пользователем, а запускается только при создании пакета.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .