首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在rpm脚本中卸载版本?

如何在rpm脚本中卸载版本?
EN

Unix & Linux用户
提问于 2016-08-21 18:04:48
回答 2查看 2.3K关注 0票数 0

我有以下情况:

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

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

EN

回答 2

Unix & Linux用户

回答已采纳

发布于 2016-08-21 18:35:32

%脚本是从rpm文件的相关版本调用的。因此,如果您从1.0版升级到1.1版,那么前/后安装脚本将从rpm的1.1版本中运行,而预/后卸载脚本则从1.0版本中运行。

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

例如,这里有一个规范文件的摘录

代码语言:javascript
运行
复制
%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中。

例如

代码语言:javascript
运行
复制
% 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版本:

代码语言:javascript
运行
复制
% 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版:

代码语言:javascript
运行
复制
% 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规范文件中。

票数 1
EN

Unix & Linux用户

发布于 2016-08-21 18:16:59

不是直接的。在安装过程中,rpm数据库被锁定。最简单的方法是在rpm中将该信息作为文本文件提供,这是您正在维护的。

票数 1
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/304836

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档