WebOS Goodies

WebOS の未来を模索する、ゲームプログラマあがりの Web 開発者のブログ。

WebOS Goodies へようこそ! WebOS はインターネットの未来形。あらゆる Web サイトが繋がり、共有し、協力して創り上げる、ひとつの巨大な情報システムです。そこでは、あらゆる情報がネットワーク上に蓄積され、我々はいつでも、どこからでも、多彩なデバイスを使ってそれらにアクセスできます。 WebOS Goodies は、さまざまな情報提供やツール開発を通して、そんな世界の実現に少しでも貢献するべく活動していきます。
Subscribe       

dispatch-conf の使い方

dispatch-conf は、etc-update に代わる GentooLinux の設定ファイル更新サポートツールです。etc-update よりも格段に賢い自動処理機能、設定ファイルの履歴管理などの特徴を持ち、より安全に効率良く設定ファイルの更新作業を行うことができます。今日はこの dispatch-conf の使用方法をご紹介しようと思います。

準備

dispatch-conf を使い始めるには、少々前準備が必要です。といっても大した作業ではないので、ご安心を。

RCS のインストール

必須ではありませんが、dispatch-conf は設定ファイルの履歴を取るために RCS を利用することができます。ちなみに、RCS を使わないように設定すると、生のパッチで管理するようです。それよりはなんぼかマシなので、RCS を使いましょう。emerge で以下のようにすればインストールできます。

emerge -n app-text/rcs

-n はすでにインストールされている場合に再インストールしないようにするオプションです。

dispatch-conf.conf の設定

dispatch-conf の設定ファイルが "/etc/dispatch-conf.conf" です。以下の設定項目があります。

設定項目機能
archive-dir履歴データを格納するディレクトリを指定する
use-rcsyes なら履歴管理に RCS を利用する
diff差分表示に使用するコマンドを指定する
merge対話的なマージに使用するコマンドを指定する
replace-cvsyes なら CVS が自動挿入するコメントが変更されたときに自動処理する
replace-wscommentsyes なら空白やコメントが変更されただけのときに自動処理する
replace-unmodifiedyes ならユーザーが変更していないファイルは自動処理する
log-fileログファイルを指定する

せっかく RCS をインストールしたので、use-rcsyes に変更しておきましょう。後はお好みで。replace-*yes にしたほうが手動マージの手間がかなり減るはずです。もし間違いが起こってもいつでも元に戻せますから、yes にしてしまっても大丈夫でしょう。

履歴データ用のディレクトリを作成する

履歴データ用のディレクトリはデフォルトでは作成されていませんので、手動で作成する必要があります。デフォルト設定なら、以下のように作成します。

mkdir /etc/config-archive

これで dispatch-conf を使う準備が整いました。

使ってみる

それでは、実際に dispatch-conf を使ってみましょう。といっても、更新するものがなければ意味がないので、ここでは "emerge --update world" を実行して、いくつかの設定ファイルの更新が必要になったと仮定します。設定ファイルの更新を開始するには、単純に dispatch-conf を実行します。

dispatch-conf

そうすると、可能ならば自動処理で設定ファイルをマージしていきます。そして自動処理できないファイルが見つかると、差分を表示してコマンド待ちの状態になります。このときに使用できるコマンドは以下のとおりです。

コマンド機能
u更新ファイルで置き換える
z更新ファイルを削除し、古いファイルを維持する
nなにも処理せずにスキップする
e更新ファイルを $EDITOR で編集する
m対話的なマージを行う
l古いファイルと更新ファイルの差分を表示する
t更新ファイルをトグルで切り替える
qdispatch-conf を終了する

ここで「更新ファイル」と言っているのは、新バージョンの設定ファイルです。ただし、m コマンド実行後はこの意味が変わってきます(後述)。また、t コマンドはこの時点では効果がありません。

2006/3/17 追記
z コマンドはなるべく使わないほうがよいと思います。これを選んでしまうとオリジナルのファイルが履歴に追加されず、自動マージの機能がうまく働かなくなるようです。バグなのかなぁ・・・?(゜゜;

m コマンドの挙動は etc-update とまったく同じのようです。etc-update をご紹介したときの対話的マージのコマンド表を再掲載しておきます。

コマンド機能
edヘッダつきで、双方の変更を編集した後、採用する
ebヘッダなしで、双方の変更を編集した後、採用する
el古いバージョンを編集した後、採用する
er新しいバージョンを編集した後、採用する
e新規にその部分を入力し、採用する
l古いバージョンを採用する
r新しいバージョンを採用する
s共通行の表示 ON
v共通行の表示 OFF
q終了

すべてのブロックをマージし終えると、最初のプロンプトに戻ります。ここでは最初とは違い、マージ後のファイルが「更新ファイル」として扱われます。例えば、u コマンドを実行するとマージ後のファイルが採用されます。また、t コマンドを実行すると「更新ファイル」として扱われるファイルが新しいファイルとマージ後のファイルで交互に切り替わります。ちょっと混乱しやすいので注意してください。

あとは、これを繰り返していけば設定ファイルの更新が完了します。最初は差分が抽出できないためにすべての設定ファイルを手動マージすることになりますが、次回同じファイルを更新するときは可能な限り自動処理してくれます。

dispatch-conf の使用方法は以上です。RCS のコマンドを使えば設定ファイルを過去の状態に戻すことも容易なのですが、それはまた今度記事にしたいと思います。まだ私も使い始めたばかりですが、手動マージを行う手間が etc-update よりも格段に減って、システムの更新がかなり楽になります。まだ etc-update を使っている方は、ぜひ試してみてください!(^^)

関連記事

この記事にコメントする

Recommendations
Books
「Closure Library」の入門書です。
詳しくはこちらの記事をどうぞ!
Categories
Recent Articles