我自己的 rpm 不執行 %install 序列

我自己的 rpm 不執行 %install 序列

我第一次構建了 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、exit 0 併計算 %install 序列(複製檔案並重新啟動 nginx)時,一切正常。好的,rpmbuild 產生 RPM(在 rpmbuild/RPMS 中)和 SRPM(在 rpmbuild/SRPMS 中)。

但是,如果我理解得很好,當我使用 rpm -ivh name.rpm 安裝 SRPM 時必須執行%install序列, 我對嗎?如果是,則序列不會被執行(不會將檔案複製到 /var/www/myapp 並且不會重新啟動 nginx)。執行 RPM 相同。

SRPM 的內容正確,所有檔案都在。

答案1

如您所說,%install該部分用於配置您需要設定的初始 RPM 建構語句。

為了實現你的目標,你必須使用%postsection,你可以定義你自己的.sh的執行(例如),或者你可以一一設定你需要的句子,例如:

sudo service restart nginx

對於空RPM的問題,是因為%files部分沒有正確填充,移動到RPM的二進位與該部分的內容(%files)相關

答案2

好吧,我錯了...因為這個文件說:

當最終使用者安裝二進位 RPM 套件時,%install 部分不會運行,而僅在建立套件時運行。

相關內容