我自己的 rpm 没有执行 %install 序列

我自己的 rpm 没有执行 %install 序列

我第一次构建了一个 RPM 包。这个 RPM 是一个打包的前端应用程序,安装只需要移动应用程序文件并重新启动 nginx。这是我的 spec 文件:

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 的内容正确,所有文件都在。并且 RPM 是空的。

答案1

正如您所说的,%install部分用于配置您需要设置的初始 RPM 构建句子。

为了实现您的目标,您必须使用%post部分,在其中,您可以定义您自己的.sh 的执行(例如)或者您可以逐个设置您需要的句子,例如:

sudo service restart nginx

对于空 RPM 的问题,这是因为%files部分没有正确填充,移动到 RPM 的二进制文件与该部分的内容(%files)相关

答案2

好吧,我错了......因为这个文档说:

当最终用户安装二进制 RPM 包时,%install 部分不会运行,但仅在创建包时运行。

相关内容