在 Gentoo 中查找包的配置/编译选项

在 Gentoo 中查找包的配置/编译选项

在我没有管理的 Gentoo Linux 机器上(并且我没有 root 访问权限),我怎样才能找到用于编译包的选项?

(请注意,我以前从未使用过 Gentoo,但对基于 Debian 的发行版有很好的使用知识)

答案1

请注意,/etc/make.conf自安装包以来,中定义的当前 USE 标志和其他配置可能已更改。检查配置和编译选项的更可靠方法是检查var/db/pkg.

apache-2.2.22 的示例:

$ cat /var/db/pkg/www-servers/apache-2.2.22-r1/CFLAGS
-mtune=native -O2 -pipe -g

答案2

需要注意的是make.conf,检查包是如何编译的根本不可靠。事实上,这只是其中之一补充整个列表中的配置文件。

来自man make.conf

USE_ORDER = "env:pkg:conf:defaults:pkginternal:repo:env.d"
Determines the precedence of layers in the incremental stacking of the USE 
variable. Precedence decreases from left to right such that env overrides 
pkg, pkg overrides conf, and so forth.

所以优先级处理如下:

  1. 调用emerge时的shell环境
  2. /etc/portage/package.use 中的包特定 USE 设置
  3. 制作配置文件
  4. 所选配置文件的默认值
  5. .ebuild包文件中设置的默认值
  6. 分配默认值
  7. /etc/env.d 中定义的设置

所以基本上可以设置 USE 标志而无需在make.conf.对于 CFLAGS 也是如此(虽然它们的处理顺序是固定的,但工作原理类似)

同样,可以在配置文件中屏蔽 USE 标志,而无需在 ebuild 或上述任何其他源中进行任何标志。简而言之,基于配置文件你不能。

如果你想知道结果全球的系统当前使用的设置,使用emerge --info.这将为您提供大量详细信息。通常 CFLAGS 不会经常被单个包覆盖,因此您可以认为该输出是确定的。

如果您想知道已安装的特定软件包的 USE 标志,您可以使用equery u <package>,前提是根工具包软件包已安装。

答案3

/etc/make.conf如果使用了 portage 包管理器(很可能是),那么可以在asCFLAGS和中找到 CPU 标志CXXFLAGS。请注意,各个 ebuild 可能会过滤某些标志,因此您看到的标志/etc/make.conf可能不是用于编译包的标志。查看 ebuild(在 下/usr/portage/<category name>/<program name>/)可能会告诉您情况是否如此。

当然,这是假设/etc/make.conf包的内容在编译后没有更改。

相关内容