如何用yum安装两个不同版本的相同包

sph*_*cow 9 rpm yum package

说我想安装相同包的两个不同版本.

具体来说,我想为GNOME,gjs包安装两个版本的Javascript绑定.我想拥有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(通过一些魔术!)访问它来运行不兼容的程序而不会破坏任何东西吗?

Ger*_*yan 1

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

软件集合(SCL)。SCL 的目标是能够安装一个包或一组包的多个版本。有一个用户指南,这里有一个页面包含一些集合,但它们似乎更针对 RHEL。如果您选择此选项,我认为您将必须创建自己的收藏。

您可以决定将 F19 软件包安装在其自己的安装根目录中。这是一篇博客文章,解释了如何执行此操作(示例是生皮根,但 f19 也应该可以)。这可能是最省力的方法,但我不能 100% 确定它是否适合您的情况。它需要安装很多东西,但这样做是必要的,因为不同 Fedora 版本中的包将是针对不同的依赖项集构建的。

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

与最后一个选项相关,您也许可以获取 RPM 规范文件gjs并对其进行编辑,以便您可以将其称为不同的名称,并将其安装到不同的位置。如果您不习惯构建 gjs,这可能会更简单,因为它有 rpmbuild 有关如何编译的说明。如果您选择前一个选项,您至少可以从中获得一些提示。请参阅此处的 gjs 规范文件

也可以使用像其他包alternatives所做的那样来实现一些魔法。java这可能需要您使用上述规范文件,但还需要对其进行一些修改才能使用alternatives- 可能为 1.36.1 和 1.38.1 这两个版本安装了自定义软件包。

祝你好运!