如何在Gentoo中安装同一软件包的多个版本?


9

我想在我的Gentoo系统上安装相同软件包的两个(或更多)版本。我知道肯定不会有任何文件冲突,因为安装的文件很少,并且每个文件都以版本命名。

我知道插槽,但是这些插槽是在ebuild文件中指定的,并且假设由于某些原因,我不想编辑任何ebuild文件。

我希望已安装的版本成为world软件包的一部分,因此可以照常重新安装或卸载它们。

有没有办法安装同一软件包的多个版本?您知道实现该目标的一些Portage技巧吗?


那就是插槽的用途。如果没有插入软件包,那么我唯一能想到的就是创建一个个人叠加层和插入新的软件包/ ebuild。
基思(Keith)

@Keith-这是正确的答案,为什么不将其发布为答案?
HedgeMage

@基思:如果确实是唯一的方法,那么将其发布为答案,我会很乐意接受。
Laurent Pireyn 2011年

Answers:


9

那就是插槽的用途。如果没有插入软件包,那么我唯一能想到的就是创建一个个人叠加层和插入新的软件包/ ebuild。


2
实用的使用插槽的一些提示将对新手有所帮助:)
Stefano

1

我认为从理论上讲,您可以做一些愚蠢的事情:

$ ROOT=~/package-1.0 emerge =package-1

但是,基本上所有非重叠的内容都受到一些附加的限制和要求的约束,而这些限制和要求所涉及的信息并不多。


1

您可以尝试使用(我不确定它是否按预期工作)是/etc/portage/env用来设置特定软件包版本的SLOT。但是,由于元数据缓存,它可能无法工作。即使它确实起作用,这也是一种杂物,可能会导致意想不到的行为。和往常一样,如果它破裂了,您就可以保留碎片。


1

这是一个古老的问题,但仍然有效,并且没有人提出以下简单方法:

如果您不想创建插槽,并且知道文件不会冲突,只需在本地叠加层中创建一个新的ebuild(在make.conf中设置本地叠加层后),然后使用不同的名称命名。也许像“ mypkg.ebuild”。没有法律规定ebuild名称及其安装的文件必须共享相同的名称。将portage的pkg.ebuild文件复制到/usr/local/portage/app-class/mypkg-newversion.ebuild,对新版本进行必要的更改,进行ebuild并出现。

请记住,在获取源代码时,您将无法使用某些预定义的变量名($ {P}等)。


0

另一个可能要探索的东西是Gentoo Prefix

如果您不介意维护Gentoo的2个生态系统以提供“替代”软件包,那么这可能是一个可行的选择。

这实质上是为给定的项目范围创建一个“子空间”,然后在该项目范围内以不同的方式使用Gentoo。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.