Gentoo 迈向二进制!
2023年12月29日

Larry the cow with packages

您可能都知道 Gentoo Linux 是您最喜欢的基于源代码的发行版。您知道我们的包管理器 Portage 多年来也一直支持二进制包,并且可以自由地混合使用基于源代码和基于二进制的包安装吗?

为了加快使用速度较慢的硬件的工作速度并提高整体便利性,我们现在还提供 **可供下载和直接安装的二进制包**!对于大多数架构,这仅限于核心系统和每周更新 - 但 **amd64 和 arm64** 除外。在那里,我们的镜像上有惊人的 **>20 GB 的软件包**,从 LibreOffice 到 KDE Plasma,从 Gnome 到 Docker。Gentoo 稳定版,每天更新。尽情享受吧!以及 阅读更多详情!

问答

如何设置我现有的 Gentoo 安装以使用这些包?

快速设置说明 最常见的情况可以在我们的 wiki 中找到。简而言之,您需要在 /etc/portage/binrepos.conf/ 中创建一个配置文件。

此外,我们在 Wiki 上有一个非常简洁的 二进制包指南,其中提供了更多详细信息。

对于新的阶段/新安装,我需要做什么?

新的阶段已经包含合适的 /etc/portage/binrepos.conf/gentoobinhost.conf。您可以从一开始就开始了,尽管您可能希望将其中的 src-uri 设置替换为指向 本地镜像 上相应目录的 URI。

$ emerge -uDNavg @world

“普通”amd64 包使用哪些编译设置、use 标记等?

位于 amd64/binpackages/17.1/x86-64 下的二进制包使用 CFLAGS="-march=x86-64 -mtune=generic -O2 -pipe" 进行编译,并且适用于任何 amd64/x86-64 机器。

可用的 useflag 设置和版本对应于 amd64/17.1/nomultilib(例如,openrc)、amd64/17.1/desktop/plasma/systemdamd64/17.1/desktop/gnome/systemd 配置文件中的稳定包。这应该提供相当广泛的覆盖范围。

“普通”arm64 包使用哪些编译设置、use 标记等?

位于 arm64/binpackages/17.0/arm64 下的二进制包使用 CFLAGS="-O2 -pipe" 进行编译,并且适用于任何 arm64/AArch64 机器。

可用的 useflag 设置和版本对应于 arm64/17.0(例如,openrc)、arm64/17.0/desktop/plasma/systemdarm64/17.0/desktop/gnome/systemd 配置文件中的稳定包。

但是,这并没有针对我的 CPU 进行优化!

运气不佳。您仍然可以像以前一样自己编译包!

其他架构和 ABI 的包使用哪些设置?

二进制包托管与阶段构建相关联。这意味着,对于每个阶段,都存在一个二进制包托管,它仅覆盖阶段内容和设置。目前没有进一步扩展覆盖范围的计划。但是,这包括编译器(gcc 或 clang)和整个构建工具链!

这些包是否经过加密签名?

是的,使用与 阶段相同的密钥

安装前是否验证加密签名?

是的,但存在一个限制(在默认设置中)。

Portage 了解两种二进制包格式,XPAK(旧)和 GPKG(新)。只有 GPKG 支持加密签名。直到最近,XPAK 都是默认设置(并且在您的安装中可能仍然是默认设置,因为这不会在升级期间更改,而只在新安装时更改)。

新的官方 Gentoo 二进制包均采用 GPKG 格式。GPKG 包会验证其签名,如果验证失败,则会拒绝安装。为了避免与旧的二进制包不兼容,默认情况下,仍然可以安装 XPAK 包(没有签名)。

如果您希望强制要求验证签名(我们强烈建议这样做),请在 make.conf 中设置 FEATURES="binpkg-request-signature"。然后,显然,您也只可以使用 GPKG 包。

我收到一个错误,指出无法验证签名。

尝试以 root 身份运行 Gentoo Trust Tool getuto

$ getuto

这应该使用 Gentoo 发布工程密钥为 Portage 设置所需的密钥环。

如果您在 make.conf 中启用了 FEATURES="binpkg-request-signature",则在每次二进制包下载操作之前都会自动调用 getuto,以确保导入密钥更新和撤销。

我自己制作了二进制包,但 portage 现在拒绝使用它们!

好吧,您发现了 FEATURES="binpkg-request-signature" 的副作用。对于您自己制作的包,您需要设置一个签名密钥,并使该密钥受 /etc/portage/gnupg 中锚点的信任。

我们 Wiki 上的 二进制包指南 在这里将会有所帮助。

我的下载速度很慢。

那么请使用 本地镜像 而不是从俄勒冈大学下载。您只需编辑 /etc/portage/binrepos.conf 中的 URI 即可。是的,这是安全的,因为有加密签名。

我的 Portage 仍然想要从源代码编译。

如果您使用与配置文件默认值不同的 useflag 组合,那么您将无法使用这些包。不过,Portage 会很乐意混合和匹配并结合使用二进制包和本地编译的包。Gentoo 仍然是一个基于源代码的发行版,我们并不打算完全采用仅限二进制的安装而无需任何编译。

我可以在合并的 usr 系统上使用这些包吗?

是的。(如果出现任何问题,则这是一个错误,应 报告。)

我可以在其他(较旧或较新)的配置文件版本中使用这些包吗?

**不可以。** 这就是 src-uri 路径包含例如“17.1”的原因。**当出现新的配置文件版本时,我们也会提供新的、单独的包目录。**

是否有计划提供 ~amd64 的二进制包?

还没有。这将意味着大量的重建……如果我们有一天提供它,出于技术原因,它将位于一个单独的 URI 上。

目前的建议是尽可能坚持稳定版,并在本地添加 package.accept_keywords 中您想要使用的测试版包。这意味着您仍然可以使用大量的二进制包,并且只需自己编译其余的包即可。

我发现了一个问题,与 portage 或特定包有关!

那么请 **寻求建议**(在 IRC、论坛或邮件列表上)和/或 **提交错误报告!**

二进制包支持已经测试了一段时间,但随着越来越多的人使用它,肯定会发生一些边缘情况,并且始终欢迎高质量的错误报告!

有没有漂亮的图片?

当然!以下是每个架构的二进制包数据量(以 GB 为单位)……

package data over time