为什么 rpm 重新安装在 %post 部分之后执行 %postun
why does rpm reinstall executes %postun after %post section
我有一个示例 rpm 规格文件,例如
Name: helloworld
Version: 2.0
Release: 2%{?dist}
Summary: Simple Hello World rpm
License: Internal
Source0: helloworld-src.tar.bz2
%description
%prep
%setup -c -q -T -D -a 0
%build
%install
echo "Install command ..."
%post
echo "post command..."
%postun
echo "postun command..."
%files
%doc
%changelog
当我执行rpm -i helloworld.rpm
时,输出是
post command...
但是当我执行rpm --reinstall helloworld
时,输出是
post command...
postun command...
这是为什么?我期待 postun
在 post
被调用之前被调用。
我在哪里可以找到 rpm --reinstall
期间将调用哪些 scriplet?
因为重装就像是升级;安装新的,卸载旧的,触发 %postun
。来自 Fedora's excellent packaging guidelines 的完整序列显示您正在执行第 4 步和第 11 步:
- 新包的 %pretrans
- 新包的 %pre
- (软件包安装)
- %post 的新包
- 其他包的触发因素(通过安装新包触发)
- 新包的 %triggerin(如果有的话)
- 旧包的%triggerrun(如果是卸载旧包触发的)
- 其他包的%triggerrun(卸载旧包触发)
- 旧包的 %preun
- (删除旧包)
- %postun 旧包
- %triggerpostun of old package(如果是卸载旧包引起的)
- %triggerpostun 其他软件包(如果它们是通过卸载旧软件包触发的)
- %post新包的传输
我有一个示例 rpm 规格文件,例如
Name: helloworld
Version: 2.0
Release: 2%{?dist}
Summary: Simple Hello World rpm
License: Internal
Source0: helloworld-src.tar.bz2
%description
%prep
%setup -c -q -T -D -a 0
%build
%install
echo "Install command ..."
%post
echo "post command..."
%postun
echo "postun command..."
%files
%doc
%changelog
当我执行rpm -i helloworld.rpm
时,输出是
post command...
但是当我执行rpm --reinstall helloworld
时,输出是
post command...
postun command...
这是为什么?我期待 postun
在 post
被调用之前被调用。
我在哪里可以找到 rpm --reinstall
期间将调用哪些 scriplet?
因为重装就像是升级;安装新的,卸载旧的,触发 %postun
。来自 Fedora's excellent packaging guidelines 的完整序列显示您正在执行第 4 步和第 11 步:
- 新包的 %pretrans
- 新包的 %pre
- (软件包安装)
- %post 的新包
- 其他包的触发因素(通过安装新包触发)
- 新包的 %triggerin(如果有的话)
- 旧包的%triggerrun(如果是卸载旧包触发的)
- 其他包的%triggerrun(卸载旧包触发)
- 旧包的 %preun
- (删除旧包)
- %postun 旧包
- %triggerpostun of old package(如果是卸载旧包引起的)
- %triggerpostun 其他软件包(如果它们是通过卸载旧软件包触发的)
- %post新包的传输