我が家の標準バックアップ・ツールである 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 があるが、これはインストールしなくても大丈夫だった。

$ tar xfzv dar-2.3.10.tar.gz

$ 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) と言う同名のパッケージが存在する。紛らわしいので、混同しないように注意。

Comments are closed.