내 자신의 rpm이 % 설치 순서를 실행하지 않습니다.


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을 종료하고 % 설치 순서가 계산됩니다 (파일 복사 및 nginx 재시작). rpmbuild는 RPM (rpmbuild / RPMS)과 SRPM (rpmbuild / SRPMS)을 생성합니다.

하지만, 내가 잘 이해한다면, rpm -ivh name.rpm으로 SRPM을 설치할 때 % 설치 순서가 실행되어야합니다. , 맞지? 만약 내가, 시퀀스가 ​​실행되지 않습니다 (/ var / www / myapp에 파일을 복사하지 않고 nginx를 다시 시작하지 않음). RPM 실행.

SRPM의 내용물이 정확하고 모든 파일이 들어 있습니다. 그리고 RPM은 비어 있습니다.

답변:


2

당신이 말했듯이, %install 섹션은 설정해야 할 초기 RPM 빌드 문장을 구성하기위한 것입니다.

목표를 달성하려면 다음을 사용해야합니다. %post 섹션에서, 당신은 당신 자신의 .sh (예를 들어)의 실행을 정의 할 수있다. 또는 당신이 필요로하는 문장 하나 하나를 설정할 수있다. 예를 들면 :

sudo service restart nginx

빈 RPM의 문제는 다음과 같습니다. %files 섹션이 제대로 채워지지 않으면 RPM으로 이동 된 바이너리는 해당 섹션의 내용과 관련됩니다 (% 파일)


1

Ok, 나는 틀렸다. .. 이것으로서 의사 말한다 :

바이너리 RPM 패키지가있는 경우 % install 섹션이 실행되지 않습니다.   최종 사용자가 설치하지만 패키지를 만들 때만 실행됩니다.


내 목표를 달성하기위한 올바른 부분은 % post입니다.
Kalamarico
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.