発端
この記事の補足に追記した/etc/adjtimeの位置に関するFHS3.0における変更ですが、その理由は
In FHS 2.1, this file was /etc/adjtime, but as hwclock updates it, that was obviously incorrect.
とあまりにも文句なく「そりゃそーだよな」だったので手元のGentooについては修正しちまうことにしました。
どうやって変更する?
ググるとLFSではsed(1)でソースそのものを書き換えているみたいな情報が出てきますが、現在のutil-linuxではADJTIME_PATHがhwclock(8)の実行時だけではなくconfigureスクリプトの実行時にも指定できるようなので、こいつを使います。
Gentooパッケージに新しいビルドオプションをつける方法
ebuildに書いてあるケース
USEフラグを使います。Gentoo使いにはお馴染みの方法ですし、ここでは扱いません。
ebuild的に全く関知していないオプションを足したい
こういう時に便利なのがpackage.envとEXTRA_ECONFです。
今回の場合は、以下2つのファイルを作ります。ディレクトリがなかったら適宜作りましょう。
EXTRA_ECONF="ADJTIME_PATH=/var/lib/hwclock/adjtime"
sys-apps/util-linux adjtime-location.conf
構造としては、
- Portageの設定をひとまとめにしたテキストファイルを
/etc/portage/env下に配置する-
EXTRA_ECONF以外にもPortageの機能に関する変数、例えばFEATURESやCXXFLAGSなどが指定可能。
-
-
/etc/portage/package.envというテキストファイルに適用したいパッケージ名と設定ファイル名をスペース区切りで指定する- パッケージごとに1行、設定ファイルはその行内においてスペース区切りで複数書いてOK
といった感じです。
つけた後にやること
# emerge -1 sys-apps/util-linuxでビルドをやり直し、configureスクリプト実行コマンドラインの出力の末尾にEXTRA_ECONFで指定した行が加わっていることを確認すればOKです。
もちろん、追加したオプションの内容によっては、それが原因でビルドに失敗する場合もあるので気をつけましょう。
最後に、今回はadjtimeファイルの参照先が変わったので
# mkdir /var/lib/hwclock
# mv /etc/adjtime /var/lib/hwclock/adjtime
# ln -s /var/lib/hwclock/adjtime /etc/adjtime
とフォローを入れておきました。
こういうのはGentooの醍醐味ですね。お疲れ様でした。