いますぐ実践! Linuxシステム管理

[バックナンバーのトップへ] [Linux システム管理のトップへ]


いますぐ実践! Linux システム管理 / Vol.063 / 読者数:843名

こんばんは、うすだです。

先月でおわったはずのお仕事が、まだ続いていて、 もんもんとした日々を過ごしております。

要求仕様を満たさなかった自分が悪いのですが、ひたすらデバッグや調査を繰り返し、 もっともらしいドキュメントを仕上げるという作業は、 自分にはものすごく向いていないということを、実感しております。

ずっと、そのことに気づいていないふりをしていたのですが、体は正直でした。 今、体重の増加、右肩の痛みというシグナルを体が発しています。

というわけで、以下をじっくり読んで、落ち着かせたいと思います。

プログラマの心の健康
http://www.hyuki.com/kokoro/

ちょっと気持ちがすっきりしてきました。
しかし、右肩などの肉体的な問題は、すぐには解決されないようです…。

では、無理矢理テンションを上げて、今週もはりきってまいりましょう!

今週のお題 - 設定ファイルをまとめてリビジョン管理する

先々週、先週と、RCS を使った、設定ファイルのリビジョン管理方法を、 ご紹介しました。

Vol.061 - 設定ファイルをリビジョン管理する
http://www.usupi.org/sysad/061.html
Vol.062 - 設定ファイルをもっとリビジョン管理する
http://www.usupi.org/sysad/062.html

ただ、RCS は、基本的には、個々のファイルを対象とします。
しかし、Apache や postfix などのように、 あるディレクトリ以下に設定ファイルが束になっている場合、 RCS でそれぞれ管理するのは、けっこう大変ではないかと思います。

というわけで今週は、設定ファイルの束を、 まとめてリビジョン管理してみようと思います。


はい、お察しの通り、今週は CVS を使います。
あ、CVS なら開発で使ってるよ、なんていう貴兄は、読み飛ばしちゃってくださいまし。

で、例によって例のごとく、cvs パッケージが入っていなければ、 apt や yum などで入れておいてください。

さて、その CVS ですが、RCS と大きく違うところは、以下の3点です。

  • 複数のファイル(あるディレクトリ以下すべて)を対象とする。
  • 複数の人々で管理できる。
  • ネットワークに対応している。

複数のファイルをまとめて管理しますので、 リポジトリと呼ばれるところにデータを置き、別の作業場所に取り出して、 編集などするようになっています。 (今回は、2,3番目には触れません。ごめんなさい。)


さて、ちゃんとした理解などは、書籍や検索で勉強していただくとして、 ここでは早速、実際に使ってみることにしましょう。

まずは、リポジトリを作成します。
環境変数 CVSROOT でその場所を指定して、cvs コマンドの init を実行します。

  # export CVSROOT=/usr/local/cvs
  # cvs init

csh 系のかたは、以下のようにしてください。

  # setenv CVSROOT /usr/local/cvs
  # cvs init

上記の例では、/usr/local/cvs に、リポジトリを作成しています。


リポジトリができましたので、次は、プロジェクトを登録します。
ここでは、/etc/httpd 以下を管理対象としてみたいと思います。
登録するには、管理対象とするディレクトリに移動して、 cvs コマンドの import を実行します。

  # cd /etc/httpd
  # cvs import httpd usu apache_config

httpd は、プロジェクト名です。作業ディレクトリに取り出すときなど、 プロジェクトを指定する際に使用します。
あとの usu と apache_config は、それぞれベンダータグ、 リリースタグと呼ばれるものです。どういうときに使うのか、 わたしにはわかりませんので、いつも適当につけています。(す、すみません…)

以下のように、リポジトリに登録されたことがわかります。

  # ls /usr/local/cvs
  CVSROOT/  httpd/

今度は、リポジトリから作業ディレクトリへ、取り出してみましょう。
取り出すには、cvs コマンドの checkout を、プロジェクト名を指定して実行します。

  # cd /tmp
  # cvs checkout httpd
  # ls httpd
  CVS/  conf/  conf.d/

作業ディレクトリ /tmp に、httpd 以下が取り出されました。
ただし、実際は、/etc/httpd で作業しますので、 各ディレクトリに作成された CVS ディレクトリを、/etc/httpd 以下へコピーします。

  # find httpd -name CVS | \
  while read dir; do mv -i $dir /etc/`dirname $dir`; done

あ、csh 系の場合は、以下のようにしてください。

  # foreach dir (`find httpd -name CVS`)
  foreach? mv -i $dir /etc/`dirname $dir`
  foreach? end

では次に、設定ファイルを修正しましたので、更新してみましょう。
更新するには、cvs コマンドの commit を実行します。

  # cvs commit httpd.conf
  /usr/local/cvs/httpd/conf/httpd.conf,v  <--  httpd.conf
  new revision: 1.2; previous revision: 1.1

また、新たなファイルを管理対象に加えたいときは、 cvs コマンドの add を実行します。
たとえば、/etc/httpd/conf.d/test.conf を追加するには、以下のように実行します。

  # cd /etc/httpd/conf.d
  # cvs add test.conf
  cvs add: scheduling file `test.conf' for addition
  cvs add: use `cvs commit' to add this file permanently

commit の実行で、実際に登録されます。

  # cvs commit test.conf
  /usr/local/cvs/httpd/conf.d/test.conf,v  <--  test.conf
  initial revision: 1.1

さて、それぞれのファイルに、1.1 や 1.2 などというバージョンがついていますが、 きりのいいときに、全体で1つの名前をつけたいですよね。
CVS では、今の状態にタグをつけることができます。cvs コマンドの tag を、 タグ名を指定して実行します。

  # cd /etc/httpd
  # cvs tag apache_20060625

上記では、apache_20060625 というべたなタグ名をつけています。
将来、この状態に戻りたいときには、checkout の際に、 -r オプションでタグを指定します。

  # cd /tmp
  # cvs checkout -r apache_20060625
  # tar cf - httpd | (cd /etc; tar xvfp -)

今回は、tar コマンドで、/etc/httpd にまるっとコピーしています。


以上、CVS によるリビジョン管理について、簡単にご紹介しました。

他に、update, log などの命令や、 SSH を使って別のマシンから取り出したりといったところをご紹介したかったのですが、 これ以上長くなると読んでもらえないかもと思いましたので、泣く泣く割愛しました。
# わかりにくくてすみません。簡潔に記述する能力がほしいです…。

とりあえずは、あたり触りのないところや、 どうでもいいディレクトリをでっちあげて試してみると、 よろしいのではないかと思います。

宿題の答え

先週の宿題は、

  ロックしなくてもチェックインできるようにしてみましょう。

でした。

rcs コマンドの -U オプションを使えば、そのようにできます。

  # rcs -U /etc/hosts
  RCS file: /etc/hosts,v
  done

こうすれば、ロックせずにチェックアウトして、 変更後いきなりチェックインができます。

  # co /etc/hosts
  /etc/hosts,v  -->  /etc/hosts
  revision 1.3
  done
  (/etc/hosts の編集)
  # ci /etc/hosts
  /etc/hosts,v  <--  /etc/hosts
  new revision: 1.4; previous revision: 1.3
  enter log message, terminated with single '.' or end of file:
  >> add new hosts.
  >> .
  done

もとに戻したい場合は、rcs コマンドの -L オプションを使います。

  # rcs -L /etc/hosts
  RCS file: /etc/hosts,v
  done

今週の宿題

今週の宿題は、

  CVS ディレクトリにあるファイルを眺めてみましょう。

です。

CVS 以下のファイルは、どれもテキスト形式ですので、中を覗くと、 どのように管理しているのかが、おぼろげにわかるのではないかと思います。

あとがき

そんなこんなで設定ファイルの管理について、3週間やってきました。

正直に言いますと、わたしは、 バックアップファイルをその都度作成することのほうが、多いです。
具体的には、ファイル名に、".数字" を付加したバックアップファイルを作成します。 こんな感じで。

  # cp -p /etc/hosts /etc/hosts.0
  # cp -p /etc/hosts /etc/hosts.1
  ...

どう考えても、RCS を使った方がすっきりするはずなのですが、 一度脳に刻み込まれた習慣は、なかなか変えられないようです。

さて、設定ファイルをどう管理するかという問題は、 みなさん抱えていらっしゃるようでして、こんなのがありました。

設定ファイルをまとめて管理する
http://playrecord.org/archive/config-files-on-Unix/myconf.html

ユーザのホームに設定ファイルを置いておき、 sudo で make コマンドを実行すると /etc などにコピーされるよう、 Makefile を記述しておくという方法です。

方法は単純ですが、バックアップや複数マシンへの対応など、 メリットはたくさんありそうです。
わたしは、これを読んで、Makefile に細工して拡張したくなりました。

ちなみに、上記は、「オレンジニュース」というサイトで、 数日前に紹介されていました。(実は、冒頭のも、そうです。)

オレンジニュース
http://secure.ddo.jp/~kaku/tdiary/

ここは、いろんなサイトのネタを紹介してくれるところです。
技術ネタなんて、あちこち巡回せず、ここだけを見ればいいというくらいに、 充実しています。(雑多ネタもおもしろいです。)

WWW のページは星の数ほどありますが、 ここを定期的にチェックしておくといいよっていうところは、 とても貴重ではないかと思います。

わたしも、そんなサイトを目指して、じわじわがんばろうと思いました。
変に着地したところで、今宵はここまでにいたしとうございます。

今週も、ここまで読んでいただき、ありがとうございました。
それでは、また来週に、お会いしましょう!

「いますぐ実践! Linux システム管理」の解除は、以下からできます。
http://www.usupi.org/sysad/ (まぐまぐ ID:149633)

バックナンバーは、こちらにほぼ全部そろっています。
http://www.usupi.org/sysad/backno.html

「栗日記」−はやくギャラリーを観に行かねば…。
http://www.usupi.org/kuri/ (まぐまぐ ID:126454)
http://usupi.seesaa.net/ (栗日記ブログ)
http://www.fumido.co.jp/kuriniki/ (栗日記ぎゃらりー)


[バックナンバーのトップへ] [Linux システム管理のトップへ]

トップ

バックナンバー
    [日付順] [目的別]

プロフィール

▼ リンク

独学Linux
Linuxデスクトップ環境に関する情報が満載です。 メルマガもありますよ。
Server World
CentOS 6をサーバとしたときの設定例が、これでもかというくらいたくさん載っています。 CentOS以外のディストリビューション(Fedora, Ubuntu)も充実しています。
LINUXで自宅サーバーを構築・導入(Fedora9)
Fedora9のインストールの仕方から管理方法まで、詳しく載っています。 SearchManには情報がもりだくさんです。
マロンくん.NET
〜サーバ管理者への道〜
Linuxをサーバとして使用するための、いろいろな設定方法が載っています。 マロンくんもかわいいです。 なんといっても、マロンくんという名前がいいですね!!
日経Linux
今や数少なくなってしまったLinuxの雑誌。ニュースやガイドもあります。
Linux Square − @IT
@ITが提供する、Linux の情報が満載。 載っていない設定方法はないんじゃないでしょうか。
gihyo.jp…技術評論社
Linuxに限らず様々な技術情報が満載のサイト。 SoftwareDesign誌も、 ソフトウェア技術者は必見です。
SourceForge.JP Magazine
Linux に限らず、オープンソース関連の記事が網羅されています。
ITmediaエンタープライズ:Linux Tips 一覧
Tips というより FAQ 集でしょうか。わからないことがあれば覗きましょう。
IBM developerWorks : Linux
開発者向けですが、勉強になりますよ。
Yahoo!ニュース - Linux
Yahoo!のLinuxに関するニュース一覧です。
栗日記
システム管理とかと全然関係ありませんが、毎日栗の絵を描いています。
システム管理につかれちゃったとき、癒されたいときに、ご覧ください。:-)
WEB RANKING - PC関連
ランキングに参加してみました。押してやってください。

▼ 作ってみました

Add to Google

▼ せんでん




▼ 最近読んだ本

▼ 気に入ってる本