Happy My Life

日常とか技術とか

/etcをgit,Mercurialで管理する

etckeeperより。

みなさんは、/etc以下のファイル(設定ファイル群)をどのように管理しているのだろうか? 私は相変わらず、元ファイルを退避した上で設定を変更していたりする。

ここ最近、git/Mercurial等のバージョン管理システム(VCS)が手軽に使えるようになってきたので、これらを使って設定ファイル群を管理しようと考えるのはごく自然な事。

変更に失敗して前の状態に戻したいとか、バージョンアップで今の設定ファイルが上書きされてしまうという事のたびたび起こる。

ただ、設定ファイルでは/etc/shadowのように管理者権限が無いと操作できないファイルが存在するなど、ソースコードと同じ管理方法ができない。そういう事もあり、VCSを使えば便利という事は分かってはいるが、いまいち使う気になれないのも、これまた事実。

で、そんな時に便利なのが、etckeeper。これは、設定ファイル群をVCS使って簡単に管理できるようにしてくれるツール群の事。

etckeeperを使えば、バージョンアップで設定ファイルが上書きされてしまって、以前と同じ設定に復旧するのに時間がかかってしまったというトラブルも防ぐ事ができる。

インストール方法

現在は、Debianだとlenny以降、Ubuntuだとhardy(8.04)以降でパッケージとして提供されている。ちなみにVCSは、debianパッケージはgitがデフォルト、ubuntuパッケージだとbzrがデフォルトなので、他のVCSを使用する場合は、あらかじめ/etc/etckeeper.confの設定を変更しておく必要がある。

ソースコードはgit clone git://git.kitenet.net/etckeeperで取得し、make installでインストール可能。yum等にも対応予定(というか、もうしているのか?)

使い方

リポジトリの初期化、今の設定ファイルのcommit。

sudo etckeeper init; sudo etckeeper commit
 

etckeeperはaptにフックしているので、sudo aptitude full-upgradeをしても、自動でコミットしてくれる。これは便利。

手動でファイルを変更した後、commitする場合は

sudo etckeeper commit "message"
 

cd /etc/; sudo git commit -m "message" (gitの場合)
 

とする事で、commitできる。

その他は、いつものコマンドが使用できるので、そんなに悩む事はないかと。

注意点としては、VCSの制約上で、ファイルのセキュリティがゆるくなる事もあるので、そのあたりはあらかじめ対策しておく必要がある(リポジトリのアクセス権限を700にするなど)