如何在rpm scriptlet中获取要卸载的版本?

小米

我有以下情况:

  1. 我安装了软件包的版本1,它在安装后执行自定义操作(将一些文件复制到某个位置)
  2. 我安装了同一软件包的版本2
  3. 我想卸载版本1。要进行清理,我需要在卸载后知道确切的版本,以清理复制的文件。

有没有办法在rpm脚本中获取版本号?

斯蒂芬·哈里斯(Stephen Harris)

%脚本从相关版本叫做rpm文件。因此,如果您从1.0版升级到1.1版,则安装前/安装后脚本将从rpm的1.1版运行,而安装前/安装后卸载脚本则从1.0版运行。

这使脚本很容易正确地处理自己的版本。

例如,这是SPEC文件的摘录

%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

注意调用的顺序和版本号;调用pre / post安装,版本发行版与新版本匹配,然后使用旧版本号调用pre / post卸载。

因此,您的想法是不需要获取此信息,可以通过使用%将其直接包含在rpm规范文件中

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章