彼女からは、おいちゃんと呼ばれています

ウェブ技術や日々考えたことなどを綴っていきます

それ etckeeper でできるよ - /etc 以下を Git で自動的にバージョン管理

こんにちはこんにちは。一昨日、さくら VPS に Git をインストールするエントリーを書きましたが、実はバージョン管理は etckeeper にもお世話になっています。

etckeeper というのは、Git 等のバージョン管理ツールを用いて、/etc 以下をほぼ自動的に管理してくれる有り難いツールです。下記のタイミングで自動的にコミットしてくれます。手動で任意のタイミングでコミットすることもできます。

-yum コマンド実行の前後 -日付が新しくなったとき <<

以下、さくら VPSCentOS 5.5 -64bit)で etckeeper を使えるようになるまでの手順をまとめてみましたので、よろしければ参考にしてください。

*目次

  1. Git のインストール
  2. etckeeper のダウンロード
  3. etckeeper の設定ファイルの編集
  4. etckeeper のインストール
  5. etckeeper の使い方 <<

*1. Git のインストール

etckeeper を使うためには、Git 等のバージョン管理ツールがインストールされている必要があります。Git 以外も使えるのですが、やっぱ Git でしょ、ということで Git のインストールから。

インストールには ひと手間必要ですが、一昨日エントリーを(がんばって)書きましたので、そちらを参照してください。

-Linux コマンド説明付きで、さくら VPS へ Git をインストールしてみた(CentOS 5.5 - 64bit)

*2. etckeeper のダウンロード

git clone コマンドで etckeeper ソースをダウンロードできます。ダウンロードしたいディレクトリに移動してから、git clone を実行してください。

||

cd /usr/local/src

git clone git://git.kitenet.net/etckeeper

||<

|| (出力結果) Cloning into etckeeper... remote: Counting objects: 2507, done. remote: Compressing objects: 100% (1632/1632), done. remote: Total 2507 (delta 1594), reused 1258 (delta 793) Receiving objects: 100% (2507/2507), 440.79 KiB | 188 KiB/s, done. Resolving deltas: 100% (1594/1594), done. ||<

*3. etckeeper の設定ファイルの編集

etckeeper がダウンロードできたら、インストールする前に、設定ファイルを編集します。下記のとおり yumrpm を使う設定にしてください。

||

vi /usr/local/src/etckeeper/etckeeper.conf

||<

|conf|

The VCS to use.

VCS="hg"

VCS="git" ## デフォルトで Git を使うようになっているはず

VCS="bzr"

VCS="darcs"

Options passed to git commit when run by etckeeper.

GIT_COMMIT_OPTIONS=""

Options passed to hg commit when run by etckeeper.

HG_COMMIT_OPTIONS=""

Options passed to bzr commit when run by etckeeper.

BZR_COMMIT_OPTIONS=""

Options passed to darcs record when run by etckeeper.

DARCS_COMMIT_OPTIONS="-a"

Uncomment to avoid etckeeper committing existing changes

to /etc automatically once per day.

AVOID_DAILY_AUTOCOMMITS=1

Uncomment to avoid etckeeper committing existing changes to

/etc before installation. It will cancel the installation,

so you can commit the changes by hand.

AVOID_COMMIT_BEFORE_INSTALL=1

The high-level package manager that's being used.

(apt, pacman-g2, yum etc)

HIGHLEVEL_PACKAGE_MANAGER=yum ## CentOS なので apt から yum へ変更

The low-level package manager that's being used.

(dpkg, rpm, pacman-g2, etc)

LOWLEVEL_PACKAGE_MANAGER=rpm ## CentOS なので dpkg から rpm へ変更 ||<

*4. etckeeper のインストール

まず、make コマンドでバイナリファイルを生成します。

||

cd /usr/local/src/etckeeper

make

||<

|| (出力結果) sed -i~ s/Version:./Version: $(perl -e '$_=<>;print m/*1/' rm -f etckeeper.spec~ ./etckeeper-bzr/init.py build || echo " bzr support not built" Traceback (most recent call last): File "./etckeeper-bzr/init.py", line 6, in ? from bzrlib.errors import BzrError ImportError: No module named bzrlib.errors bzr support not built ||<

上記のように bzrlib.errors というモジュールがない旨のエラーが発生するのですが、特に問題ないようです。

make install コマンドでインストールできるのですが、make -n install とすると、実際にはインストールせずに、インストールを実行したらどうなるかを事前に把握することができます。何かと便利です。

||

cd /usr/local/src/etckeeper

make -n install

||<

|| (出力結果) mkdir -p /etc/etckeeper/ /var/cache/etckeeper/ cp -dR *.d /etc/etckeeper/ install -m 0644 -D etckeeper.conf /etc/etckeeper/etckeeper.conf install -D etckeeper /usr/bin/etckeeper install -m 0644 -D etckeeper.8 /usr/share/man/man8/etckeeper.8 install -m 0644 -D bash_completion /etc/bash_completion.d/etckeeper install -m 0644 -D yum-etckeeper.py /usr/lib/yum-plugins/etckeeper.py install -m 0644 -D yum-etckeeper.conf /etc/yum/pluginconf.d/etckeeper.conf ./etckeeper-bzr/init.py install --root= || echo " bzr support not installed" echo " installation successful" ||<

etckeeper-bzr がインポートされませんが、etckeeper 自体のインストールは成功するようですので、make install コマンドで実際にインストールします。

||

cd /usr/local/src/etckeeper

make install

||<

|| (出力結果) mkdir -p /etc/etckeeper/ /var/cache/etckeeper/ cp -dR *.d /etc/etckeeper/ install -m 0644 -D etckeeper.conf /etc/etckeeper/etckeeper.conf install -D etckeeper /usr/bin/etckeeper install -m 0644 -D etckeeper.8 /usr/share/man/man8/etckeeper.8 install -m 0644 -D bash_completion /etc/bash_completion.d/etckeeper install -m 0644 -D yum-etckeeper.py /usr/lib/yum-plugins/etckeeper.py install -m 0644 -D yum-etckeeper.conf /etc/yum/pluginconf.d/etckeeper.conf ./etckeeper-bzr/init.py install --root= || echo " bzr support not installed" Traceback (most recent call last): File "./etckeeper-bzr/init.py", line 6, in ? from bzrlib.errors import BzrError ImportError: No module named bzrlib.errors bzr support not installed echo " installation successful" installation successful ||<

*5. etckeeper の使い方

||

etckeeper init

||<

で /etc に Git リポジトリが作成され etckeeper の監視が開始されます。

|| (出力結果) Initialized empty Git repository in /etc/.git/ ||<

最初のコミットもしておきましょう。

||

etckeeper commit "First commit"

||<

ちなみに

||

etckeeper commit -m "First commit"

||<

ではないので気をつけてください。Git と異なり -m は不要です。

最初のコミットが終わったら、前述のとおり、下記のタイミングで自動的にコミットされます。

-yum コマンド実行の前後 -日付が新たになったとき

もしくは、任意のタイミングでコミットしたり。

||

etckeeper commit "(message)"

||<

/etc でフツーに Git のコマンドも使用可能です。

||

cd /etc

git commit -m "(message)"

||<

ログを確認したいときは Git コマンドで OK

||

cd /etc

git log

||<

その他、etckeeper に独自コマンドを追加したりもできますが、詳細は後述の参考サイトを参照してください。

ではでは。

*おまけ - Git の参考書籍(入門書)

一昨日も書きましたが、Git コマンドに慣れるには下記 2冊がオススメです。

入門git

入門git

入門Git

入門Git

ちなみに濱野純さんって Git のメンテナだったんですね。小飼弾さんの「アルファギークに逢いたい」 を読んで、恥ずかしながら昨日知りました。現役のおじさんはカッコいいです♪

*参考サイト

-CentOS に etckeeper をインストール - miauの避難所 -http://blog.udzura.jp/2010/11/22/tutorial-of-etckeeper/

*関連エントリー

-Linux コマンド説明付きで、さくら VPS へ Git をインストールしてみた(CentOS 5.5 - 64bit)

*1:.?