![我自己的 rpm 不執行 %install 序列](https://rvso.com/image/1539540/%E6%88%91%E8%87%AA%E5%B7%B1%E7%9A%84%20rpm%20%E4%B8%8D%E5%9F%B7%E8%A1%8C%20%25install%20%E5%BA%8F%E5%88%97.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、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 建構語句。
為了實現你的目標,你必須使用%post
section,你可以定義你自己的.sh的執行(例如),或者你可以一一設定你需要的句子,例如:
sudo service restart nginx
對於空RPM的問題,是因為%files
部分沒有正確填充,移動到RPM的二進位與該部分的內容(%files)相關
答案2
好吧,我錯了...因為這個文件說:
當最終使用者安裝二進位 RPM 套件時,%install 部分不會運行,而僅在建立套件時運行。