Unix系OSの設定ファイルはあちこちのディレクトリに散らばっているので、管理が面倒です。私はこういった設定ファイルを ˜/config/ 以下に、 つまりrootでない一般ユーザのディレクトリ1か所にまとめて管理しています。ここではそのやり方をご紹介します。
まず作業例から見てください。 /etc/hosts を編集したい場合なら、作業は以下のようになります。
% cd ˜/config/
% vi etc/hosts
〜編集する〜
% sudo make
設定ファイルを1か所にまとめて管理すると、以下のようなメリットがあります。
最後の make だけはrootでやりますが、それまでのファイル編集は一般ユーザのままで行えます。
自分のホームディレクトリのバックアップを取るついでに、 ˜/config/ もバックアップしてしまいましょう。
˜/config/ をバックアップから戻してきて、そこで make するだけです。 ファイルの更新時刻によっては touch が必要になるかもしれません。
またディレクトリ構成が違う別マシンを設定する場合でも、自分が変更したファイル (だけ) の最新版が手元にあるので、作業はずいぶん楽になります。
設定ファイルの編集履歴を記録しておきたい場合があります。ファイルを ˜/config/ にまとめておけば、あとはこのディレクトリをお好みのヴァージョン管理ツールに登録するだけです。
私のマシン (FreeBSD) の場合、 ˜/config/ のディレクトリ構成は以下のようになっています。
% ls -CF ˜/config/
Makefile etc/ usr.local.etc/
boot/ sys.i386.conf/ usr.sup/
./boot:
loader.conf
./etc:
X11.xorg.conf hosts portsnap.conf sysctl.conf
cvsupfile make.conf rc.conf ttys
fstab manpath.config resolv.conf usbd.conf
./sys.i386.conf:
BLADEDANCE
./usr.local.etc:
lighttpd.conf nullmailer.remotes pkgtools.conf
./usr.sup:
ports-all-refuse
Makefile の内容は以下の通りです (抜粋)。
TARGET_FILES = \
/boot/loader.conf \
/etc/X11/xorg.conf \
/etc/cvsupfile \
... 中略 ...
/usr/local/etc/nullmailer/remotes \
/usr/local/etc/pkgtools.conf \
/usr/sup/ports-all/refuse
INSTALL = /usr/bin/install -o root -m 0644
all: ${TARGET_FILES}
/boot/loader.conf: boot/loader.conf
${INSTALL} $? $@
/etc/X11/xorg.conf: etc/X11.xorg.conf
${INSTALL} $? $@
... 中略 ...
/usr/local/etc/pkgtools.conf: usr.local.etc/pkgtools.conf
${INSTALL} $? $@
/usr/sup/ports-all/refuse: usr.sup/ports-all-refuse
${INSTALL} $? $@
# end of file
上記例を参考に、 ~/config/ ディレクトリと Makefile を作成してください。
/etc/hosts を編集したい場合なら、作業は以下のようになります。
% cd ˜/config/
% vi etc/hosts
〜編集する〜
% sudo make
まだ ˜/config/ 以下で管理していない設定ファイルを扱いたい場合は、以下のようにします。例として、fooというアプリをインストールすると /usr/local/etc/foo.conf という設定ファイルが出来たので、これをカスタマイズしていきたい、という場合を考えます。
1. /usr/local/etc/foo.conf を ˜/config/ 以下へコピー
編集前の元ファイルを、 ˜/config/ 以下へコピーします。扱いやすいようにサブディレクトリを掘りましょう。私は /usr/local/etc/ 以下のファイルは ˜/config/usr.local.etc/ 以下に置くようにしているので
% cp /usr/local/etc/foo.conf ˜/config/usr.local.etc/
となります。お好みで ˜/config/usr/local/etc/ にしても構いません。
2. Makefile 編集
foo.conf を Makefile に追加します。 書き方は上記例のマネで。 TARGET_FILES と依存関係行との両方を追加するのをお忘れなく。
似たものを2か所に書くのがやや面倒です。なんとか1か所で済ませられる書き方がないかと調べましたが、分かりませんでした。BSD Make と GNU Make 共用でうまい書き方ありませんでしょうか >Makeグルの皆様
3. (必要なら) ヴァージョン管理ツールへチェックイン
˜/config/ をヴァージョン管理ツールで管理したい場合、自分のカスタマイズを進めていく前のこの時点でチェックインしておくと便利でしょう。
4. ˜/config/usr.local.etc/foo.conf を編集
5. cd ˜/config/; sudo make
4と5は、上記の「既存ファイルの編集」と同じです。
6. fooの動作確認
fooを動かしてみましょう。 うまく動かなければ、4〜6を繰り返します。
7. (必要なら) ヴァージョン管理ツールへチェックイン
fooがちゃんと動き、カスタマイズ内容も安定したら、チェックインしてツールに記録します。