package - 如何使用 yum 安装同一软件包的两个不同版本

标签 package rpm yum

假设我想安装同一个包的两个不同版本。

具体来说,我想为 GNOME 安装两个版本的 Javascript 绑定(bind),gjs 包。我想要gjs-1.38.1-1.fc20.x86_64gjs-1.36.1-1.fc19.x86_64 .

Fedora 20 中的其他软件包很大程度上依赖于gjs-1.38.1-1.fc20.x86_64。所以不可能用gjs-1.36.1-1.fc19.x86_64代替.

我有一个与 gjs-1.38.1-1.fc20.x86_64 不兼容的特定程序并且需要前一个。

那么是否可以安装以前版本的gjs gjs-1.36.1-1.fc19.x86_64并通过 /usr/bin/env gjs1 访问它(通过某种魔法!)运行不兼容的程序而不破坏任何东西?

最佳答案

据我所知,没有一个简单的 yum 命令可以做你想做的事,它需要一点点努力。我将列出我知道的几种方法。可能是您的用例消除了以下一项或多项或全部。

软件集合 (SCL)。 SCL 的目的是能够安装一个包或一组包的多个版本。有一个User Guide , 并且有一个 page here有一些集合,但它们似乎更针对 RHEL。如果你选择这个选项,我认为你必须创建自己的收藏。

您可以决定将 F19 软件包安装在其自己的安装根目录中。 Here's a blog post这解释了如何做到这一点(示例是生皮根,但也应该可以使用 f19 根)。这可能是最省力的路径,但我不能 100% 确定它是否适合您的情况。它需要安装很多东西,但这样做是必要的,因为不同 Fedora 版本中的软件包将针对不同的依赖集构建。

我认为这种方式可能有效,也可能无效,至少在一定程度上应该有效;但可能需要相当大的努力。它基于您想要的实际上是 gjs-1.36.1 的假设。而不是以前的 Fedora 版本的任何打包版本。如果你去source repository for gjs并单击发布,您将能够下载所需版本的存档文件。然后您可以从源代码构建它,在配置步骤中指定与默认值 /usr 不同的前缀。 -- 也许 /usr/local会好的。然后,如果您安装了它,您可以指定完整路径,例如 /usr/local/bin/gjs而不是 /usr/bin/gjs .请注意,默认值将是您的 $PATH 上首先找到的任何一个。 , 所以如果 /usr/local/bin/usr/bin 之前, 那么你要么想要改变你的 PATH订购,或将您的自定义版本安装到与 /usr/local 不同的位置.

与最后一个选项相关,您可能会获得 gjs 的 RPM 规范文件。并对其进行编辑,以便您将其称为不同的名称,并将其安装到不同的位置。如果您不习惯构建 gjs,这可能会更直接,因为它包含有关如何编译的 rpmbuild 说明。如果您选择上一个选项,您至少可以从中获得一些提示。见 gjs spec file here .

也可以使用 alternatives 来做一些魔术。就像 java 做了什么和其他包。这可能需要您使用上述规范文件,但还需要对其进行一些修改以使用 alternatives。 -- 可能为 1.36.1 和 1.38.1 这两个版本安装了自定义包。

祝你好运!

关于package - 如何使用 yum 安装同一软件包的两个不同版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22425839/

相关文章:

linux - 应用程序调用 rpm 更新自身问题

linux - 管理从源代码编译的软件包的最佳方法

centos - 如何做 yum 备份和恢复?

r - roxygen2 包文档中的逐字输出

java - 如何在 Eclipse 中将包查看为文件夹结构

swift - #AudioKit 无法在 Xcode 14.1、Maverick 上添加包

linux - Bigtop (centos) 中缺少 hadoop 包 - 安装问题

linux - 修改二进制打包应用的名称及其调用命令

maven - maven-rpm-plugin 和 rpm-maven-plugin 有什么区别

centos - Ansible:如何使用 Ansible 更新系统 CentOS