私が管理していない(そしてrootアクセス権もない)Gentoo Linuxボックスでパッケージコンパイルオプションをどのように見つけることができますか?
(私は以前は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
パッケージがどのようにコンパイルされたかを確認することはまったく信頼できないことに注意することが重要です。実際、これもそのうちの1つです。再充填するプロフィールの完全なリストです。
から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を呼び出すときのシェル環境
- /etc/portage/package.useのパッケージ固有のUSE設定
- 構成ファイルの作成
- 選択したプロファイルのデフォルト
.ebuild
パッケージファイルに設定されたデフォルト値- デフォルト値の割り当て
- /etc/env.dで定義された設定
したがって、デフォルトでを挿入せずにUSEフラグを設定できますmake.conf
。 CFLAGSも同様です(処理順序は固定されていますが、同様に機能します)。
同様に、USEフラグは、ebuildや上記の他のソースからのフラグなしで構成ファイルでマスクできます。つまり、構成ファイルに基づくことはできません。
結果を知りたい場合グローバルシステムが現在使用している設定を使用するemerge --info
と、多くの詳細を取得できます。通常、CFLAGSは単一のパッケージによって頻繁にオーバーライドされないため、この出力は決定的と見なすことができます。
インストールされている特定のパッケージのUSEフラグを知りたい場合は、次のものをequery u <package>
使用できます。ルートキットパッケージがインストールされました。
答え3
/etc/make.conf
Portage Package Managerを使用している場合は(おそらく)CFLAGS
asおよびでCPUフラグを見つけることができますCXXFLAGS
。個々のebuildは特定のフラグをフィルタリングできるため、表示されるフラグはパッケージのコンパイルに使用されるフラグではない可能性が/etc/make.conf
あります。 ebuild(下)を見ると、/usr/portage/<category name>/<program name>/
これが本当かどうかがわかります。
もちろん、これは/etc/make.conf
コンパイル後もパッケージの内容が変わらないと仮定します。