Develop and Download Open Source Software

OpenSource Downloads

7-Zip  (4,208)  
HandBrake Japanese Language Version  (3,353)  
CrystalDiskInfo  (1,743)  
CotEditor  (1,120)  
CrystalDiskMark  (866)  
Boookends  (788)  
SMPlayer  (642)  
えこでこツール  (599)  
Tera Term  (595)  
10  FFFTP  (579)  
11  Cabos  (530)  
12  BathyScaphe  (494)  
13  ffdshow  (481)  
14  MergeDoc  (464)  
15  ギコナビ  (438)  
More >>

最近ブックマークされた記事

/etc/ファイル群の編集を簡単化するAugeas

2008年06月16日 10:42 Ben-Martin(2008年6月12日(木)) 1 2 3
 複雑な構成の設定ファイル群に新たな変更を施す場合、awkを用いてファイル中の要変更箇所を特定して臨機応変的な対処をするという自作スクリプトの活躍した時代は、今や終焉に近づいているのかもしれない。それというのも、設定ファイルの記述内容を自動で解読する Augeas というツールの登場により、人間は本来の目的である設定内容の変更だけに集中できるようになりつつあるからである。例えば仮に、何らかの設定ファイルにおける特定情報の記述位置が4列目に移動されていたとしても、Augeasを使えば該当する設定情報は以前と同様に提示されるため、そうした内部的な変更をユーザがいちいち気にする必要はなくなるのだ。

 Augeasを用いた設定ファイル群の編集はコマンドラインから直接実行できるが、あるいはこうした機能をネイティブのC APIおよび、Python、Ruby、OCamlのバインディングを用いてその他のプログラムに組み込むことも可能になっている。Augeasの入手法に関しては、Fedora 9の標準リポジトリに収録されている他、openSUSE 10.3については1-Clickインストールができるようになっているが、現状でUbuntu用のパッケージは用意されていない。私の場合は、64ビット版Fedora 8マシン上で「./configure; make; sudo make install」という通常のインストール手順にてソースコードからコンパイルしたAugeasバージョン0.1.1を使用している。

 なお上記の./configureを実行してから(READMEに示してあるように)Augeasをセットアップしても最初は上手く行かないはずで、それは設定ファイル群の認識にAugeasが使用するファイル群は/usr/localにインストールされているのに、実際には/usrを検索するためだ。こうした設定ファイルの認識法を規定しているのはレンズ(lens)と呼ばれているファイル群であり、ここではこれらlensファイル群についてもう少し説明することにしよう。先の通常インストールにて発生する問題を解決するには、下記に示したようにAUGEAS_LENS_LIBに正しいパスをエクスポートすればいい。ここではまず下記の実行例における1つ目のlsコマンドにて、ファイルディレクトリが何も出力されていない点に注目して頂きたい。

$ augtool
augtool> ls
Not enough arguments for ls
augtool> ls /
augeas/ = (none)
augtool>
$ export AUGEAS_LENS_LIB=/usr/local/share/augeas/lenses
$ augtool
augtool> ls /
augeas/ = (none)
files/ = (none)

 Augeasの認識した設定ファイル群の表示は、一種の仮想的なファイルシステムを2つ介して行われるようになっている。つまり/filesのパスでは設定ファイル群、そして/augeasではメタデータが表示されるのであり、例えば/etc/hostsのファイル群はAugeasにおいて/files/etc/hostsという扱いにされる。

 Augeasでサポートされているのは、aliases、aptsources、fstab、grub、hosts、ifcfg、inittab、pam、sshd、sysconfig、xinetd、yumの設定ファイルフォーマットである。その他の独自フォーマットの設定ファイルをAugeasで編集したい場合は、lensと呼ばれる機構を利用しなければならない。既にテキスト構文解析およびExtended Backus-Naur Form(EBNF)についての知識を有すユーザであれば、各自の設定ファイルに応じたAugeas用のlensファイルを作成するのはそれほど難しくないはずだが、EBNFに詳しくないユーザがlensファイルを作成するには、テキストの構文解析(parsing)と形式文法(formal grammar)に関する何らかの入門書に目を通しておかなくてはならないだろう。こうした標準的なEBNFの定義法とAugeas用lensの記述法を比べた場合、両者の間に存在する基本的な相違点の1つは、lensの用途は特定のテキストファイルを抽象構文木(abstract syntax tree)に変換する構文解析だけでなく、そうして取得した構文木からプレインテキストファイルへの再変換という双方向の処理に使用するという点である。

 これはAugeasのダウンロードページにも記載されている注意事項だが、現行のAugeasは未だ試作段階であるため、ここで編集した設定ファイルが損傷する可能性を想定しておかなくてはならない。そのためコマンドラインツールには、こうした事態に備えた“バックアップ”オプション、つまり変更を加える設定ファイルを別途保管しておく機能が用意されているのである。またこの機能を用いると“/”以外をシステムルートディレクトリとした状態でAugeasを実行させることもできる。この機能を使うと、例えば/tmp/augeas-root/etc/hostsなどの指定で各自の設定ファイルを一般ユーザの権限にてコピーしておき、このファイルに施した変更に問題がないかを一通りチェックしてから、変更後のファイルを改めて/etc/hostsにコピーし直すという処理ができる。

関連トピック

最終更新:2008年08月16日 17:07