RPM 规范 %post 不在 rpmbuild 中执行 [英] RPM spec %post doesn't execute in rpmbuild
问题描述
给定最小的 RPM 规范文件,它应该只执行一个 %post
节:
Given the minimal RPM spec file, that should only execute a %post
stanza:
$ cat ~/RPMBUILD/SPECS/test.spec
Name: None
Version: 1.0
Release: 1
Summary: Bla
License: Proprietary
%description
Bla
%prep
%build
%install
%clean
%post
echo ">>> Inside post <<<"
%files
然而,来自%post
的回声没有执行:
$ rpmbuild -v -bb ~/RPMBUILD/SPECS/test.spec
Executing(%prep): /bin/sh -e /home/ronbarak/RPMBUILD/tmp/rpm-tmp.IvhCZs
+ umask 022
+ cd /home/ronbarak/RPMBUILD/BUILD
+ LANG=C
+ export LANG
+ unset DISPLAY
+ exit 0
Executing(%build): /bin/sh -e /home/ronbarak/RPMBUILD/tmp/rpm-tmp.yCLpOK
+ umask 022
+ cd /home/ronbarak/RPMBUILD/BUILD
+ LANG=C
+ export LANG
+ unset DISPLAY
+ exit 0
Executing(%install): /bin/sh -e /home/ronbarak/RPMBUILD/tmp/rpm-tmp.uEbSD2
+ umask 022
+ cd /home/ronbarak/RPMBUILD/BUILD
+ '[' /home/ronbarak/RPMBUILD/BUILDROOT/None-1.0-1.x86_64 '!=' / ']'
+ rm -rf /home/ronbarak/RPMBUILD/BUILDROOT/None-1.0-1.x86_64
++ dirname /home/ronbarak/RPMBUILD/BUILDROOT/None-1.0-1.x86_64
+ mkdir -p /home/ronbarak/RPMBUILD/BUILDROOT
+ mkdir /home/ronbarak/RPMBUILD/BUILDROOT/None-1.0-1.x86_64
+ LANG=C
+ export LANG
+ unset DISPLAY
+ /usr/lib/rpm/check-buildroot
+ /usr/lib/rpm/redhat/brp-compress
+ /usr/lib/rpm/redhat/brp-strip /usr/bin/strip
+ /usr/lib/rpm/redhat/brp-strip-static-archive /usr/bin/strip
+ /usr/lib/rpm/redhat/brp-strip-comment-note /usr/bin/strip /usr/bin/objdump
+ /usr/lib/rpm/brp-python-bytecompile
+ /usr/lib/rpm/redhat/brp-python-hardlink
+ /usr/lib/rpm/redhat/brp-java-repack-jars
Processing files: None-1.0-1.x86_64
Checking for unpackaged file(s): /usr/lib/rpm/check-files /home/ronbarak/RPMBUILD/BUILDROOT/None-1.0-1.x86_64
Wrote: /home/ronbarak/RPMBUILD/RPMS/x86_64/None-1.0-1.x86_64.rpm
Executing(%clean): /bin/sh -e /home/ronbarak/RPMBUILD/tmp/rpm-tmp.wLCv3C
+ umask 022
+ cd /home/ronbarak/RPMBUILD/BUILD
+ exit 0
我应该更改什么才能使 %post
执行?
What should I change so that the %post
will execute?
推荐答案
%post
是安装/卸载时间脚本部分,因此它只会在尝试安装或卸载生成的 rpm 时执行.
%post
is an install/uninstall time script section, so it will execute only when trying to install or uninstall the generated rpm.
来自文档:
%post 脚本在安装包后执行.之一需要 %post 脚本的最常见原因是运行 ldconfig在一个新的共享库之后更新可用共享库的列表已安装.当然,其他功能可以在 %post 中执行脚本.例如,安装 shell 的包使用 %post 脚本将 shell 名称添加到/etc/shells.
The %post script executes after the package has been installed. One of the most popular reasons a %post script is needed is to run ldconfig to update the list of available shared libraries after a new one has been installed. Of course, other functions can be performed in a %post script. For example, packages that install shells use the %post script to add the shell name to /etc/shells.
如果您想在构建时执行其他内容,您需要依赖 %build
或 %install
部分.
If you want to execute additional stuff at build time, you need to rely on the %build
or %install
sections.
这篇关于RPM 规范 %post 不在 rpmbuild 中执行的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!