我が家の標準バックアップ・ツールである DAR (Disk ARchive) は、僕が管理するサーバーでは公私の別なく利用している。差分や増分が管理できて重宝するツールで、先日もある案件で新規契約したレンタル・サーバー (OS は CentOS 5.4) にも、普段通りインストールを試みた。
ところがちょうど 04/09 にリリースされたばかりの最新バージョン 2.3.10 のソースを展開して configure → make を実行すると、make の終盤で "mv: cannot stat `t-fr.gmo': No such file or directory" とエラーを吐いて止まってしまう。旧バージョンの 2.3.9 でも同様。他のマシンでは同じ手順でコンパイルが完了するので、このサーバーの問題だ。
ネットで検索してみると、DAR のコンパイルでこのトラブルはあまり話題になっていないようだ。ひょっとして厄介な問題なのかと思ったが、さらに事例を探すと、他のプログラムのコンパイルでも同様のエラーが出る場合があり、キーワードは "gettext" であることがわかった。gettext はプログラムを多言語対応させる際に使うライブラリで、国際化を意識したいくつかの CMS ツール等でも、文字列を表示する際には内部で _() (gettext() のエイリアス) を実行していたりする。コンパイル時の出力でも po がどうのこうのと書いてあったので、恐らくコイツが原因だろう。
DAR のコンパイルを完了した CentOS 上で rpm -qa | grep gettext を実行すると gettext パッケージが存在しているが、問題のサーバーには存在しない。やっぱりねと yum でインストールし、改めて以下のように DAR をコンパイルしたところ、今度は無事に完了した。CentOS では他に gettext-devel があるが、これはインストールしなくても大丈夫だった。
$ cd dar-2.3.10/
$ ./configure --prefix=/usr/local/dar ← インストール先を指定
$ make
$ su
# make install-strip
# cd /usr/local/
# mv dar dar-2.3.10 ← インストール先ディレクトリをリネーム (複数バージョン共存措置)
# ln -s dar-2.3.10 dar ← リネーム前の名前でシンボリック・リンクを作成
以前にも書いたが、重要なデータのバックアップは自動化しておかないと、いざと言う時に役に立たないことが多い。日々のバックアップを省力化するには、バックアップ対象リスト (任意のディレクトリや、その都度作成する LVM のスナップショット等) を参照し、「完全」 → 「増分」 → 「増分」・・・ のサイクルを 1世代として一定数以上の世代を破棄しつつ DAR を実行したり、任意の時点まで自動リストアするスクリプトを用意し、それを Puppet で配下のサーバーに自動配布して・・・(略)。
尚、CentOS には DAR (Dynamic Apt Repository builder) と言う同名のパッケージが存在する。紛らわしいので、混同しないように注意。