如何升级 Gentoo 以使用所有已安装软件的最新版本,包括那些带有空白关键字的软件?

如何升级 Gentoo 以使用所有已安装软件的最新版本,包括那些带有空白关键字的软件?

我知道如何升级 Gentoo 以使用所有已安装的标有测试关键字的软件的最新版本,即通过将以下行编辑ACCEPT_KEYWORDS/etc/portage/make.conf

ACCEPT_KEYWORDS="~ARCH"

其中ARCH是系统的架构,例如 x86-64 系统的 amd64。相反,这个问题是如何使用当前启用的覆盖中的所有软件的最新版本,包括那些具有空关键字字段的软件。例如sys-devel/gcc-7.1.0-r1目前在其 ebuild 中有这个 keywords 字段:

KEYWORDS=""

我知道它没有标记任何关键字,因为它是实验性的,可能会导致系统损坏。我知道这次升级可能会导致系统损坏,所以我收到了警告,但我只想知道如何升级到 Gentoo 实验系统(其中 Gentoo '测试' 系统会有关键字~ARCH)以及所有已安装软件的最新可用版本。

编辑:我以为我通过在这个问题的标题中包含“所有已安装的软件”来表达自己的意思,但在第一个评论中我显然没有。我想将所有已安装的软件升级到最新版本,包括那些标有空关键字字段的软件。

答案1

创建以下文件(按照 jimmij 向您建议的那样):

/etc/portage/package.accept_keywords

在所述文件中,添加一个像这样的条目(添加注释用于解释,推理如下示例文件):

# The following values are permitted for arch:
# ** indicates a package with no keywords.  These are the 
# packages usually hard masked.
# ~arch, where arch is your platform type, will download testing versions.
# arch, where arch is your platform type, will download stable versions.
# This is the convention used in make.conf.

#Package Name            #Arch
sys-devel/gcc            **
package-cat/package      arch_keyword

# It's also acceptable to version lock a package.  
# Note that the arch is also needed, when a package has
# no keywords, or is in testing.

#Package Name                  #Arch
=sys-devel/gcc-6.3.0           **
<=sys-devel/gcc-3.4.6-r2       amd64
=package-cat/package-9999      **

由于以下事实,只有使用 jimmij 和我建议的方法才能以您要求的方式升级到前沿并不是 Gentoo 树中的每个包都有硬屏蔽包或 9999 包。因此,无法使用 来对您的系统进行全局关键字设置make.conf


您将获得的最接近的方法是使用app-portage/layman添加和管理叠加层,然后将具有屏蔽版本的每个包添加到package.accept_keywords,然后使用关键字文件创建自定义配置文件。最后,使用eselect profile切换到您的自定义配置文件。有关如何正确执行此操作的示例,请访问萨巴永Linux,以及Sabayon GitHub 存储库。 GitHub 存储库包含多个覆盖层,可将普通的 Gentoo 安装转变为具有自己的包管理器的成熟 Linux 发行版。也可以看看Chromium操作系统,它使用定制的 Gentoo Tree 为 ChromeBook 构建 Chrome 和 ChromeOS。请注意,该树是 Google 内部的。

相关内容