Gentoo
在 Gentoo 中找出包的配置/編譯選項
在我沒有管理的 Gentoo Linux 機器上(並且我沒有 root 訪問權限),我怎樣才能找到用於編譯包的選項?
(請注意,我以前從未使用過 Gentoo,但對基於 Debian 的發行版有很好的工作知識)
請注意,在
/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
重要的是要注意
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.
所以優先級被處理為:
- 呼叫emerge時的shell環境
- /etc/portage/package.use 中的包特定 USE 設置
- 製作.conf
- 所選配置文件的預設值
- 包
.ebuild
文件中設置的預設值- 分配預設值
- /etc/env.d 中定義的設置
所以基本上可以設置一個 USE 標誌而不在
make.conf
. 對於 CFLAGS 也是如此(雖然它們的處理順序是固定的,但它的工作原理相似)同樣,可以在配置文件中屏蔽 USE 標誌,而無需在 ebuild 或上述任何其他來源中使用任何標誌。簡而言之,基於配置文件你不能。
如果您想知道系統目前使用的結果全域
emerge --info
設置,請使用. 這應該會給你大量的細節。通常 CFLAGS 不會經常被單個包覆蓋,因此您可以認為該輸出是確定的。如果您想知道已安裝的特定軟體包的 USE 標誌,您可以使用
equery u <package>
,前提是安裝了gentoolkit軟體包。