![내 rpm이 %install 시퀀스를 실행하지 않습니다.](https://rvso.com/image/1539540/%EB%82%B4%20rpm%EC%9D%B4%20%25install%20%EC%8B%9C%ED%80%80%EC%8A%A4%EB%A5%BC%20%EC%8B%A4%ED%96%89%ED%95%98%EC%A7%80%20%EC%95%8A%EC%8A%B5%EB%8B%88%EB%8B%A4..png)
처음으로 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)을 생성합니다.
하지만 잘 이해했다면 rpm -ivh name.rpm을 사용하여 SRPM을 설치할 때%install 시퀀스를 실행해야 합니다., 내 말이 맞지? 그렇다면 시퀀스가 실행되지 않습니다(/var/www/myapp에 파일을 복사하지 않고 nginx를 다시 시작하지 않음). RPM을 동일하게 실행합니다.
SRPM의 포함 내용이 정확하고 모든 파일이 들어 있습니다. 그리고 RPM은 비어 있습니다.
답변1
말씀하신 대로 %install
섹션은 설정해야 할 초기 RPM 빌드 문장을 구성하는 것입니다.
목표를 달성하려면 %post
섹션을 사용해야 합니다. 즉, 자신만의 .sh 실행을 정의하거나(예를 들어) 필요한 문장을 하나씩 설정할 수 있습니다. 예를 들면 다음과 같습니다.
sudo service restart nginx
RPM이 비어있는 문제는 %files
섹션이 제대로 채워지지 않아서 RPM으로 이동한 바이너리가 해당 섹션의 내용(%files)과 관련되어 있기 때문입니다.
답변2
알았어, 내가 틀렸어... 이렇게 됐어문서말한다:
%install 섹션은 최종 사용자가 바이너리 RPM 패키지를 설치할 때 실행되지 않고, 패키지를 생성할 때만 실행됩니다.