我有以下情况:
有没有办法在rpm脚本中获取版本号?
发布于 2016-08-21 18:35:32
%脚本是从rpm文件的相关版本调用的。因此,如果您从1.0版升级到1.1版,那么前/后安装脚本将从rpm的1.1版本中运行,而预/后卸载脚本则从1.0版本中运行。
这使得脚本很容易正确地处理自己的版本。
例如,这里有一个规范文件的摘录
%pre
echo Pre called with version %{version}-%{release}
%post
echo Post called with version %{version}-%{release}
%preun
echo Pre-un called with version %{version}-%{release}
%postun
echo Post-un called with version %{version}-%{release}它们非常简单,只是为了证明这一点。当您构建rpm时,这些值被嵌入rpm中。
例如
% rpm -q --scripts -p sweh-test-1.0-0.x86_64.rpm 
preinstall scriptlet (using /bin/sh):
echo Pre called with version 1.0-0
postinstall scriptlet (using /bin/sh):
echo Post called with version 1.0-0
preuninstall scriptlet (using /bin/sh):
echo Pre-un called with version 1.0-0
postuninstall scriptlet (using /bin/sh):
echo Post-un called with version 1.0-0现在,让我们安装这个包的1.0.0版本:
% sudo rpm -i sweh-test-1.0-0.x86_64.rpm 
Pre called with version 1.0-0
Post called with version 1.0-0到目前为止,还不错。运行前/后安装脚本。
现在让我们升级到1.1版:
% sudo rpm -U sweh-test-1.1-0.x86_64.rpm
Pre called with version 1.1-0
Post called with version 1.1-0
Pre-un called with version 1.0-0
Post-un called with version 1.0-0注意调用的顺序和版本号;调用预/后安装,版本发布与新版本匹配,然后用旧版本号调用。
因此,您不需要派生这些信息,您可以通过使用%宏直接将其包含在rpm规范文件中。
发布于 2016-08-21 18:16:59
不是直接的。在安装过程中,rpm数据库被锁定。最简单的方法是在rpm中将该信息作为文本文件提供,这是您正在维护的。
https://unix.stackexchange.com/questions/304836
复制相似问题