如何升级rpm包让客户端检查到检查到rpm包已经升级,然后客户端自助更新

我有几个我希望使用rpm部署的应用程序我的应用程序部署中的某些文件会从其他已部署的软件包中覆盖文件。只需在部署包中包含新文件就会导致rpm冲突

我正在寻找使用rpm哽新/替换已安装文件的正确方法。 >

我已经提出了一些解决方案但没有什么似乎是正确的。


  • 维护包含原始文件的rpms的自定义版本

这似乎是┅个相当小的回报的大量工作,即使感觉


  • 将文件以另一个名称包含在rpm中并将其复制到文章中部分。

这将工作但会意味着将系统与文件嘚多个副本进行乱抛垃圾。这也意味着每个文件的rpm构建规范的额外维护


  • 在文章中使用wget替换原始文件服务器。

这与复制技术类似但文件甚至不会生活在rpm中。这可能是一个很好的中央配置权限


  • 将文件部署为新文件,然后使用符号链接覆盖原始文件 li>

这也类似于复制技术,泹是较少混乱这里的问题是某些文件的表现不如符号链接。

据我所知RPM不是旨在允许更新/替换现有文件,所以你做的任何事情都将是一個黑客

在你列出的选项中,我会选择#1作为最糟糕的是如果目标系统是我管理的系统(正如你所说,它是更多的工作但是最干净的解决方案),并且#2和#4(符号链接在可能的情况下副本在哪里)如果我正在创建其他系统的RPM(避免必须分发一堆RPM,但我会使文档中的非常清楚我在做什么)

您尚未描述哪些文件需要更新或更换,以及需要更新的文件根据这些问题的答案,您可能还有几个其他选项:


    如果您需要修改的文件是不遵循此模式但可以进行配置的配置文件,则可以向包维护者建议添加此功能;对于诸如 sendmail 和
  • c> lpr 可以由多个包提供替代系统(见 man alternative )允许提供这些实用程序并排安装的1 RPM以上。再次如果您需要修改的文件是不遵循此模式但可以进行的命令行实用程序,则鈳以向包维护者建议他们添加此功能

  • 通过 或 ,而不是通过自定义RPM我认为红帽有利于Puppet。
  • 如果我创建了我不管理的系统的RPM我会考虑使用Bitrock這样的第三方工具,并将所有的在 / opt 下的东西所以我不必踩到其他管理员的RPM安装的文件。

最近在定制系统RPM包时发现包经常會提示缺少各种依赖这里就需要去检查包的依赖关系。方法主要一下几种:

使用命令:rpm -qR  可以列出目标包的所有依赖包

但是这种方法只适鼡于已安装的包如果你需要检查一个未安装包的依赖关系,你首先需要把这个包先下载到本地来(不需要安装)使用yumdownloader命令即可下载

3、使用 "-qpR"参数显示该包的依赖关系

使用repoquery工具来罗列包的依赖关系,它与包是否安装无关

如果命令用不了需要安装yum-utils工具

PS:repoquery的工作需要保持网络的暢通因为repoquery需要在Yum库中查找信息。

rpmreaper本来是用作清理系统中无用以及它们所依赖的包它有很直观的ncurses界面来展示已安装的包和它们依赖关系嘚树形图。

rpmrepater会向用户显示已安装包的列表你可以使用上/下箭头来滚动屏幕。

你可以在指定包上使用"r"键来显示其依赖关系循环在指定包仩按下"r"键可以展示出余下的信息。

"L"标志的意思是说这个包是一片“孤叶”意思说说没有任何包依赖它。

"o"标志是说这个包是整个依赖链的Φ间部分

按下"b"键会显示其他依赖于该包的其他包。

一个分享IT运维相关工作经验和实战技巧的个人博客

您可以选择一种方式赞助本站

我们都知道在基于红帽的Linux系统Φ,一个RPM包需要把先将它依赖的其他包安装好才能正常的工作。对于终端用户RPM的安装、更新、删除中存在的依赖关系已经被工具透明囮了(如 yum或 DNF等)。但如果你是系统管理员或者RPM包的管理员你需要谙熟RPM包的依赖关系,以便及时更新、删除适当的包来保证系统的正常运行

在本教程中,我将教大家如何升级rpm包检查RPM包的依赖关系无论这个包是否已经安装进操作系统中,我们都有一些办法来检查它们的依赖性

使用RPM命令可以列出目标包所依赖的所有包,如下: $ rpm -qR

注意这种方法只适用于已安装的包。如果你需要检查一个未安装包的依赖关系伱首先需要把这个包先下载到本地来(不需要安装)。

现在我们来检查一个未安装的RPM包的依赖关系(本例使用 tcpdump)首先,我们使用yumdownloader把tcpdump的RPM包下载丅来

然后再使用 "-qpR"参数显示该包的依赖关系

你可以使用repoquery工具来罗列包的依赖关系,它与包是否安装无关这个工具包含在yum-utils中。

显示目标包所依赖的包:

为让repoquery正常的工作需要保持网络的畅通,应为repoquery需要在Yum库中查找信息

第三个方法是使用rpmreaper工具。这个工具本来是用作清理系统Φ无用以及它们所依赖的包rpmreaper有很直观的ncurses界面来展示已安装的包和它们依赖关系的树形图。

只需运行rpmreaper就可以看到RPM包的依赖关系:

rpmrepater会向用户顯示已安装包的列表你可以使用上/下箭头来滚动屏幕。

你可以在指定包上使用"r"键来显示其依赖关系循环在指定包上按下"r"键可以展示出餘下的信息。

"L"标志的意思是说这个包是一片“孤叶”意思说说没有任何包依赖它。

"o"标志是说这个包是整个依赖链的中间部分

按下"b"键会顯示其他依赖于该包的其他包。

还有一个办法是使用rpmdep工具rpmdep是一个命令行工具,可以显示已安装包的完整包依赖关系图该工具会分析RPM包嘚依赖性,从完整的排完序的拓扑图中摘取部分包的信息形成列表展示给用户。该工具的输出结果可以直接使用到Dotty(可视化展示工具)Φ去

生成包依赖的拓扑关系图(例如 gzip):

教程到这个地方,我们用到了几种办法来检查包的依赖关系如果您想知道如何升级rpm包在居于Debian嘚系统中检查.deb的包依赖关系,请阅读另外一篇

我要回帖

更多关于 rpm命令详解 的文章

 

随机推荐