说我要安装两个不同版本的同一个包中。
具体而言,我想安装的Javascript两个版本的GNOME,GJS包结合。我想有gjs-1.38.1-1.fc20.x86_64
and 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。
这可能是也可能做使用alternatives
喜欢做什么用java
包等做了一些魔法。这可能会要求您使用上述规范文件,同时也进行一些修改,以使其与alternatives
工作 - 这两个版本,1.36.1和1.38.1可能安装定制的软件包。
祝好运!
这通常是在Fedora的/红帽全球处理方式是创建一个次要的“compat
”软件包,因此它会像compat-gjs-136
,你将有spec
文件的后缀136
追加到所有的可执行文件和库。一些例子你可以看看会compat-gcc-34
和compat-expat1
。
yum --nogpgcheck --releasever=20 install package-name
也许是丑陋的选项作为最后的手段。不推荐这样做,在传统的系统。