rpm - 并排 RPM 版本

标签 rpm yum rpm-spec

如果有的话,设计 RPM 的“正确”方法是什么,以便可以通过 YUM/RPM 并排安装多个版本而不会相互干扰?对于库,正确的答案似乎与 sonames 有关,尽管我找不到任何关于 sonames、符号链接(symbolic link)和 RPM 如何相互作用的好信息。我不知道应该如何命名/放置可执行文件和纯文件以便并排放置。就可执行文件而言,正确的行为似乎是在 PATH 上安装较新的版本,但如果卸载了较新的 RPM,则将旧版本放在 PATH 上。

最佳答案

本质上你需要确保版本不冲突:

  • 要求/冲突部分不得有冲突的要求
  • 每个文件名只能存在于一个版本中——除非它们完全相同
  • Scriptlets (%post ect) 如果你有他们必须合作

请注意,您将无法使用 yum 安装多个版本,因为 yum 被设计为一次安装一个版本 - 内核除外。如果您使用 yum 安装/更新软件包,所有旧版本都将被删除。因此,您需要为每个版本使用 rpm -i。

关于在路径中有更新的二进制文件,不可能正确地做到这一点。您要么需要执行类似 python 的操作,其中用户必须在命令行上指定 python 或 python3,要么您必须在指向您想要的二进制文件的路径上创建符号链接(symbolic link)。这必须在 scriptlet 中完成并且管理它是一个相当大的挑战。这也意味着符号链接(symbolic link)不属于任何包。

关于rpm - 并排 RPM 版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5680302/

相关文章:

gradle - 星云ospackage不遵守dirMode

linux - 如何在redhat linux上安装maven

rpm - 为什么 rpmbuild(1) 会忽略 RPM "Source:"文件中以 "spec"标记命名的压缩 tar(1) 文件?

directory - 使用 RPM 安装空目录

linux - 我如何列出我在centos中安装的所有软件包而没有依赖关系

mongodb - yum install mongodb 3.2 失败

git - RPM 规范中的 Source0 可以是 git repo 吗?

linux - 如何在规范文件 "Requires"行中要求不属于 RPM 的文件?

linux - 在 RPM 规范文件中使用 Jenkins BUILD NUMBER

ubuntu - 在没有外星人的情况下将rpm转换为deb?