elibc_FreeBSD 在 gentoo portage 覆盖层中意味着什么?

elibc_FreeBSD 在 gentoo portage 覆盖层中意味着什么?

我有一个 gentoo 覆盖层,已添加到http://gpo.zugaina.org/。我的 ebuilds recMD5 之一现在显示了使用标志 elibc_FreeBSD,即使我没有添加它。我也遇到了哈达普包裹。看起来我需要做的就是为包添加 use 标志,但我想知道它的目的是什么。

我也收到错误

euse -E elibc_FreeBSD

错误:使用标志“elibc_FreeBSD”被屏蔽,不应添加到 make.conf 中。

答案1

一些背景知识

从历史上看,一些 FreeBSD 用户与 Linux 用户相处得并不好。多年来,直到从零开始的Linux,Gentoo 是它的子代之一,用户无法在他们的系统上获得真正的源代码,除非他们选择使用FreeBSD 端口系统。出于这个原因,FreeBSD 用户认为自己很优越,但随着 Gentoo 和 Portage 的成熟,下图所示的战斗舞台已经搭建好了(我知道,G 是倒着的):

Gentoo 与 FreeBSD

很像 Portage 使用的ebuild构造, ports有相同的规则。我链接了依赖性检查,因为这是最大的一个。如果你看第五章第五节,您可以看到端口管理可能会被认为是一种从烦恼到头痛的事情。因此,我在下面解释的标志和项目试图通过用 portage 替换 ports 机制来缓解这个问题。看旗帜如何运作了解更多。


为什么 Gentoo 被称为元发行版

请阅读GLEP:22, 的一部分G恩托L伊努克斯增强项目,其中规范部分指出:

关键词片段

每个关键字需要显式或隐式指定以下参数:ARCH、USERLAND、LIBC 和 KERNEL。


x86、amd64、钴、mips64、arm、hppa、ia64、ppc64、sparc

核心
linux、selinux、openbsd、freebsd、netbsd、macosx

用户区
gnu、BSD

LIBC
glibc、openbsd、freebsd、netbsd、macosx

(上面的例子并不完整。例如赫德,没有包括在内,因为我对赫德知之甚少。)

完全指定的关键字看起来像“ARCH-KERNEL-USERLAND-LIBC”,因此,例如,“ppc-fbsd-gnu-glibc”将表示对应于运行 FreeBSD 内核和 GNU 用户空间的 ppc 架构的 Gentoo 系统glibc作为系统C库。

elibc是Environment_LIBC的缩写,它指向LIBC关键字片段。 LIBC是 Linux 对 C 标准库的实现。由于标准库依赖于上面引用的所有关键字,因此它是在系统范围的基础上设置的,并通过变量继承(Gentoo 中的包基础)进行设置(请参阅/etc/portage/make.profile哪个是到 的符号链接/usr/portage/profiles,这是使用 进行设置的eselect profiles)。

ecyoung@bedroom-gentoo ~ $ sudo emerge -av glibc
Password: 

These are the packages that would be merged, in order:

Calculating dependencies... done!
[ebuild   R    ] sys-libs/glibc-2.20-r2:2.2::gentoo  USE="gd (multilib) -debug (-hardened) -nscd -profile (-selinux) -suid -systemtap -vanilla" 0 KiB

Total: 1 package (1 reinstall), Size of downloads: 0 KiB

Would you like to merge these packages? [Yes/No]

为产生上述LIBC,我的个人资料包含或继承:

  1. -AMD64
  2. 核心- linux
  3. 用户区- 格努
  4. LIBC- glibc

正是本 GLEP 中解释的关键字和环境变量 USE Flags 使得 Gentoo 如此强大。这个系统是我选择 Gentoo 作为主要发行版的主要原因,也是我将阅读和/或尝试回答此处标记为 的每个问题的原因/gentoo

一旦关键字和环境变量与每个包的 USE 标志混合,就会创建元分发。虽然编译包的方法不是无限的,但我可以保证 Gentoo 系统上的每个包都以某种方式受到 USE Flag 的影响。


旗帜如何运作

要安装 FreeBSD,您需要使用FreeBSD 提供的手册安装 FreeBSD,然后在全新安装中使用Wiki 上的 Gentoo FreeBSD 说明。这样做会为 FreeBSD 添加以下功能:

Gentoo/FreeBSD是基于FreeBSD的Gentoo系统。它是 FreeBSD,有以下变化:

  • Portage 取代了 ports。
  • 基本系统由portage 管理。
  • ./contrib 和 ./crypto 中的软件已替换为 Gentoo Linux 版本。
  • rc系统被OpenRC取代。
  • Python、wget 和 bash 包含在基础系统中以支持 portage。
  • FreeBSD 的引导加载程序已从基本系统中删除(对于监狱有用)。

您所关心的两个软件包的维护者添加了在 FreeBSD 系统上编译软件包的选项。如果您使用的不是 FreeBSD 系统,那么此更改不会影响您。 portage 表明了这一点,告诉您该标志已被掩盖。你不需要改变任何东西。有关 FreeBSD 和 Linux 之间差异的简要说明(我的意思是简要说明),请参阅HTG 解释:Linux 和 BSD 之间有什么区别?

相关内容