2011-06-05
それ etckeeper でできるよ - /etc 以下を Git で自動的にバージョン管理
こんにちはこんにちは。一昨日、さくら VPS に Git をインストールするエントリーを書きましたが、実はバージョン管理は etckeeper にもお世話になっています。
etckeeper というのは、Git 等のバージョン管理ツールを用いて、/etc 以下をほぼ自動的に管理してくれる有り難いツールです。下記のタイミングで自動的にコミットしてくれます。手動で任意のタイミングでコミットすることもできます。
- yum コマンド実行の前後
- 日付が新しくなったとき
以下、さくら VPS(CentOS 5.5 -64bit)で etckeeper を使えるようになるまでの手順をまとめてみましたので、よろしければ参考にしてください。
目次
1. Git のインストール
etckeeper を使うためには、Git 等のバージョン管理ツールがインストールされている必要があります。Git 以外も使えるのですが、やっぱ Git でしょ、ということで Git のインストールから。
インストールには ひと手間必要ですが、一昨日エントリーを(がんばって)書きましたので、そちらを参照してください。
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 がダウンロードできたら、インストールする前に、設定ファイルを編集します。下記のとおり yum や rpm を使う設定にしてください。
# vi /usr/local/src/etckeeper/etckeeper.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/\((.*?)\)/' 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 "initial commit"
ちなみに
# etckeeper commit -m "initial commit"
ではないので気をつけてください。Git と異なり -m は不要です。
最初のコミットが終わったら、前述のとおり、下記のタイミングで自動的にコミットされます。
- yum コマンド実行の前後
- 日付が新たになったとき
もしくは、任意のタイミングでコミットしたり。
# etckeeper commit -m "(message)"
/etc でフツーに Git のコマンドも使用可能です。
# cd /etc # git commit -m "(message)"
ログを確認したいときは Git コマンドで OK
# cd /etc # git log
その他、etckeeper に独自コマンドを追加したりもできますが、詳細は後述の参考サイトを参照してください。
(おまけ)Git の参考書籍(入門書)
一昨日も書きましたが、Git コマンドに慣れるには下記 2冊がオススメです。
- 作者: Travis Swicegood,でびあんぐる
- 出版社/メーカー: オーム社
- 発売日: 2009/08/12
- メディア: 単行本(ソフトカバー)
- 購入: 12人 クリック: 126回
- この商品を含むブログ (61件) を見る
- 作者: 濱野純(Junio C Hamano)
- 出版社/メーカー: 秀和システム
- 発売日: 2009/09/19
- メディア: 単行本
- 購入: 25人 クリック: 553回
- この商品を含むブログ (105件) を見る
ちなみに濱野純さんって Git のメンテナだったんですね。小飼弾さんの「アルファギークに逢いたい」を読んで、恥ずかしながら昨日知りました。現役のおじさんはカッコいいです♪
参考サイト
- 189 http://bit.ly/mvDOQ9
- 139 http://b.hatena.ne.jp/hotentry
- 131 http://reader.livedoor.com/reader/
- 108 http://b.hatena.ne.jp/hotentry/it
- 74 http://b.hatena.ne.jp/
- 59 http://twitter.com/
- 56 http://longurl.org
- 44 http://www.google.co.jp/reader/view/
- 39 http://www.google.com/reader/view/
- 29 http://nanapi.jp/2514/
- 2011-06-05 ウォンビン ビール瓶。 4/28 14%
- 2011-06-05 memo@hilott 4/31 12%
- 2011-06-06 えこ日記 5/44 11%
- 2011-06-05 hrendohの日記 4/36 11%
- 2011-06-05 tech tech -テクテクブログ- 4/41 9%
- 2011-06-05 130単位 6/85 7%
- 2011-06-05 カイワレの大冒険 5/64 7%
- 2011-06-05 torutkの日記 5/84 5%