これは私の最初の質問であり、まだ初心者なので、何かを見逃したり、混乱させたり、これが確実な解決策であれば、許してください。
私はCentOS 5.8(古いバージョンであることを知っています)を使用しており、いくつかのイカ構成をテストしたいと思います。
~からイカウィキ:
NP:Squidは、ビルドする前に--enable-http-violations設定オプションを使用してビルドする必要があります。
パッケージのビルド時に指定された設定オプションが見つかる場所を確認するためにいくつかの検索を行いましたが、すべてのCentOSドキュメントを読み取らないと、これらの設定オプションが見つかる場所が見つからないようです。
私はその質問が次のようになることを知っています。これしかし、この場合、特定のイカパッケージがカスタマイズされている可能性があり、いくつかのプロセスを経ずにソースコードにアクセスできるかどうかはわかりません。
仕様ファイルを抽出せずにyumまたはrpmを使用して設定フラグを一覧表示する方法はありますか?
ベストアンサー1
あなたができる最も近いことは、%{OPTFLAGS}
変数を照会して、特定のRPMで使用されるコンパイラフラグのおおよそのアイデアを得ることです。
$ rpm -q --queryformat="%{NAME}: %{OPTFLAGS}\n" <package>
ただし、実際のコンパイラオプションを取得する最善の方法は、ソースRPM(SRPM)ファイルをダウンロードして.spec
それを構築するために使用されたファイルを参照することです。これは、特定のRPMセットを構築するために使用される実際のコンパイラオプションを見つけることができる唯一の実際のソースです。
1.%{OPTFLAGS}にお問い合わせください。
$ rpm -q --queryformat="%{NAME}: %{OPTFLAGS}\n" firefox
firefox: -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic
どのように動作しますか?
RPMを照会し、照会コマンドが返す結果の形式を指定できます。この場合、--queryformat="%{NAME}: %{OPTFLAGS}\n
パッケージ名とパッケージ値を返します%{OPTFLAGS}
。
次のように潜在的なクエリタグのリストを取得できます。
$ rpm --querytags
はい
$ rpm --querytags | grep OPTFLAGS
OPTFLAGS
この
optflags
トピックはビルドまたはインストールプラットフォームの決定には参加しませんが、マルチプラットフォームパッケージビルドでは機能します。このoptflags
エントリは、ビルドプロセス、特にコンパイル中に使用できる標準オプションセットを定義するために使用されます。RPMがIntel 80386準拠のアーキテクチャで実行されている場合、この
optflags
値はに設定されます-O2 -m486 -fno-strength-reduce
。ただし、RPMがSun SPARCベースのシステムで実行されている場合optflags
に設定されます-O2
。この項目は
RPM_OPT_FLAGS
、およびスクリプトで使用できる環境変数を設定します。%prep
%build
%install
2. SRPMに連絡する
これを行うには、以下のように指定されたSRPMをダウンロードできます。
$ sudo yumdownloader --source <package name>
その後、ファイルを抽出できます.spec
。
$ mkdir somedir; cd somedir
$ rpm2cpio ../firefox-29.0.1-1.fc19.src.rpm | cpio -ivd
.spec
その後、ファイルを参照できます。
$ ls -l | grep spec
-rw-r--r--. 1 saml saml 31913 Jun 7 08:03 firefox.spec
メモ:RPM仕様マクロは、実際に実行する操作が非常に秘密である可能性があるため、ファイルを参照しても.spec
使用されるコンパイラオプションを決定できない可能性があるため、このアプローチでもコンパイラオプションが公開されない可能性があります。%build