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

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

具体来说,我想为GNOME,gjs包安装两个版本的Javascript绑定.我想要gjs-1.38.1-1.fc20.x86_64和gjs-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.

也许可以使用像java和其他包那样的替代方法来做一些魔法.这可能需要您使用上述规范文件,但也需要对其进行一些修改以使用替代方案 – 可能为两个版本安装自定义软件包,1.36.1和1.38.1.

祝好运!

相关文章
相关标签/搜索