パッケージをemergeするときにパッチを当てる

投稿者: | 2013年12月10日

Gentooではパッケージをemergeするときに任意のパッチを当てることができます。firefoxなど一部のパッケージはepatch_userというコマンドをebuild内で呼び出しており、そのおかげで/etc/portage/patches/www-client/firefox/以下にパッチを置いておくことでemergeのときに自動でパッチを適用できるようになっているのですが、ebuild内でepatch_userを使用していないパッケージでは/etc/portage/patches/category/package以下にパッチを置くだけではパッチが適用されず、ひと工夫する必要があります。

任意のパッケージでepatch_userを呼び出すためには/etc/portage/bashrcを使用します。/etc/portage/bashrcを使用することで、emerge中の段階ごとにフックを入れることができるようになります。bashrc内ではebuildで使用されるのと同じ変数 ((例えば${PN}など)) が使用出来ます。これを利用してsrc_prepare ((epatch_userはこのタイミングで呼び出すものらしい)) にフックを入れ、epatch_userを呼び出すようにするには次のような内容のbashrcを作成します。


if [ "${EBUILD_PHASE}" == "src_prepare" ]; then
epatch_user
fi

これでどのパッケージを入れる時もepatch_userが使用されますが、何か問題が起こるかもしれないので、条件を[ "${EBUILD_PHASE}" == "src_prepare" ] && [ "${PN}" == "(パッケージ名)"]などのようにして特定のパッケージにのみepatch_userを使用するようにしたほうがいいと思います。

参考サイト: Gentoo Linux ドキュメント — 上級者向けのPortage機能

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です