【问题标题】:How to install two different version of same package with yum如何使用 yum 安装同一软件包的两个不同版本
【发布时间】:2014-03-15 15:33:59
【问题描述】:

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

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

【问题讨论】:

    标签: package rpm yum


    【解决方案1】:

    据我所知,没有一个简单的 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)安装了自定义包。

    祝你好运!

    【讨论】:

      【解决方案2】:

      这在 Fedora/RedHat 世界中通常处理的方式是创建一个辅助的“compat”包,所以它类似于compat-gjs-136,您可以在其中将spec 文件附加136所有可执行文件和库的后缀。您可以查看的一些示例是 compat-gcc-34compat-expat1

      【讨论】:

        【解决方案3】:
        yum --nogpgcheck --releasever=20 install package-name
        

        作为最后的手段,也许是一个丑陋的选择。在常规系统中不建议这样做。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2022-08-18
          • 2021-05-13
          • 1970-01-01
          • 1970-01-01
          • 2012-08-02
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多