apt-get source <package_name>
がソースパッケージを提供することを知っています。 debian
フォルダーとrules
というファイルが含まれています。私がそれを正しく理解していれば、このファイルは、どのコンパイラフラグを使用するかを含め、ソースパッケージを.deb
パッケージに変換する方法を説明しています。
2つの質問:
make -n
を実行する必要がありますか(これが可能な場合でも)、またはドキュメントを解析して何らかの方法で取得できますか?rules
ファイルによって100%決定されますか、それとも.deb
の作成が行われたシステムに依存しますか?公式の.deb
ビルドプロセスで使用されたのと同じフラグを取得するために、公式のビルドシステムを「ミラーリング」する必要がありますか?これどうやってするの?私は here を学びました。debianには、.debでパックされたバイナリにどのコンパイラフラグが使用されるかという公式のポリシーがないことを学びました。
使用されるコンパイラフラグは、
debian/rules
ファイルdh
、cdbs
など)、使用されているフラグを確認するには、少なくともパッケージをコンパイルする必要があります。
debian/rules build
のようなことをしよう
debian/rules -n
通常、それほど遠くまでは行きません。たとえば、dh
ベースのパッケージでは、次のようになります
dh build
または同様のもの; (--no-act
を使用して)何が生成されるかを示すようにdh
に要求する
dh_testdir
dh_auto_configure
dh_auto_build
等々。
debian/rules
;を読み取ってビルドフラグを判別する、誰にでもわかる簡単な方法はありません。そこに設定されたフラグを探すことで、また(適切な場合)dpkg-buildflags
(DEB_BUILD_MAINT_OPTIONS
など)のオプションを探して実行することで、いくつかのアイデアを得ることができます。多くのパッケージで、どのフラグが使用されたかを確認する最も簡単な方法は、アーカイブで出荷されたパッケージのビルドログを https://buildd.debian.org から開始することです。たとえば、 logs for coreutils
on i386
は、使用されたフラグが-Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -fstack-protector-strong -Wformat -Werror=format-security
でコンパイルされ、-g -O2 -fstack-protector-strong -Wformat -Werror=format-security -Wl,--as-needed -Wl,-z,relro
でリンクされたことを示します(ありがとう- Faheem Mitha 後者を指摘してください!).