Gentooでパッケージの設定/コンパイルオプションを探す

Gentooでパッケージの設定/コンパイルオプションを探す

私が管理していない(そして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.

したがって、優先順位は次のように処理されます。

  1. Emergeを呼び出すときのシェル環境
  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.confPortage Package Managerを使用している場合は(おそらく)CFLAGSasおよびでCPUフラグを見つけることができますCXXFLAGS。個々のebuildは特定のフラグをフィルタリングできるため、表示されるフラグはパッケージのコンパイルに使用されるフラグではない可能性が/etc/make.confあります。 ebuild(下)を見ると、/usr/portage/<category name>/<program name>/これが本当かどうかがわかります。

もちろん、これは/etc/make.confコンパイル後もパッケージの内容が変わらないと仮定します。

関連情報