CVS - みる会図書館


検索対象: UNIX MAGAZINE 2001年2月号
13件見つかりました。

1. UNIX MAGAZINE 2001年2月号

インターネット竟での利用 連載 UNIX Communication Notes 60 グラムを書いてしまうことがあるので要注意である。 理がローカルで実行されると勘違いし、そのようなプロ なう必要がある。とくに、 checkout にともなう自重丿処 される。この違いを理解して、モジュールの設定をおこ てはサーバー側で実行さそれ以外はローカルで実行 は、 checkout 、 rtag 、 export に対応するものについ ・モジュールの更新にともなうプログラムの自動実行で 習慣づけるとよい。 での変更をリポジトリに書き戻す処理をおこなうように に戻ったときには、 cvs commit を実行してローカル 反映させる。さらに、サーバー側にアクセスできる竟 めるときに、かならす cvs update を実行して変更を ・衝突の発生を避けるには、ラップトッフ。側で作業を始 辛碚に分を反映させる必要がある。 がある。その場合は、前回も説明したように手作業で更 ンドを実行したときに衝突 (conflict) が発生すること をそれぞれのシステムで更新すると、 cvs commit コマ フィ則でもファイルを展開している状況で、同じファイル コマンドによってファイルを展開し、さらにラップトッ サーノヾーイ則のデスクトップ・システムで cvs checkout いるときとは違う酉己が必要になる。 このような環竟では、 1 台のシステムで CVS を使って 使用上のヒント わなければならないわけではない。 いるのなら、そのツールを指定すればよい。かならす ssh を使 もちろん、 ssh と同等の機能をもっプログラムを利用して セスできる。 パスワードの交換がなくなるため、サーバーに安全にアク おけば、通信路か暗号化されて平文 (clear text) による と言当し、アクセスするプログラムとして ssh を指定して export CVS—RSH CVS_RSH=ssh るようになっている。たとえば、 ~/. profile などに クセスするプログラムを竟変数 CVS-RSH で設定でき ことはめったにない。このため、 CVS でもサーバーにア アクセス可能なシステムを妾インターネットに接続する 現在では、セキュリティ対・策上、 rlogin や rsh などで その他の CVS の使い方 今回は、 CVS におけるモジュールの定義、ネットワー ク環境での CVS の使い方について説明した。 CVS には、複数の開発者か並行してイ乍業を進めていく ときにファイルを論理的にロックしたり、あるいは、誰が ファイルを更新しようとしているかを監視するような機能 もある。 CVS はそれ自体でも十分な機能をもっているが、ネッ トワークエ竟でさらに便利に利用するための各種のツール がフリーウェアとして流通している。たとえは、 cvsweb という CGI プログラムを使うと、 CVS リポジトリを Web からプラウズすることができる。 今回は、 CVS を情報管理の手段として紹介したため、 これらの使い方には触れなかったが、複数のユーサーカ朝 わるプログラム開発などではきわめて効果的である。 ☆ ネットワーク竟で複数のシステムを併用しながら情報 を管理する場合、 CVS は強力な武器になる。持ち歩くラッ プトップ PC と、常時ネットワークに接続されているデ スクトップ PC を使い分けるような竟では、たいへん 重宝する。しかも、 RCS を使った経験のあるユーザーな ら、上交的簡単に使い始められるはすである。 今回紹介したような工竟でファイルの管理に頭を悩ませ ているのなら、せひとも CVS の利用をお勧めする。 ジョン管理システムを使ったことのない人にはややハード ルが高いかもしれないが、それだけの価値は寸分にある。 ( やまぐち・すぐる奈良先端科 ! 判支術大学院大学 ) UNIX MAGAZINE 2001.2

2. UNIX MAGAZINE 2001年2月号

連載 /UNIX Communication Notes ムを上手に使い分ける環竟が作れる。 基本的な考え方 UNIX MAGAZINE 2001.2 てファイルを管理するようにしている。 スクトップ PC とのあいだでできるかぎり CVS を用い もある。そこで、バックアップを簡単にするためにも、デ プ PC は、ネットワークに接続しない竟で作業すること アップなどを定期的におこなっている。一方、ラップトッ イルサーバーとして利用するシステムについては、バック だでは NFS を用いてホーム・ディレクトリを共有し、ファ 私の場合は、ふだん使っているデスクトップ PC のあい ある。 て作業を進めるような場合には CVS の利用が最適で ネットワーク環境において、複数のユーザーが並行し ・複数のユーサーが並行して作業する場合は CVS の利用がもっとも効均である。 で、同しファイルを扱いながらイ乍業をする場合は、 CVS と、移動しながら作業をおこなうラップトップ PC と ネットワークにつねに接続されているデスクトップ PC では CVS ・ネットワークから切り離されるラップトップ PC など RCS を利用してもよい。 CVS の導入を検討するとよい。個人的な竹喋であれは ノヾージョン管理が必要なファイルについては、 RCS や ・パージョン管理が腰なものについては RCS/CVS などのファイル共有技術を使うことを考えよう。 だけでおこなうのは、非効率的である。ますは、 NFS のもよいだろう。ホーム・ディレクトリの管理を CVS 環境とは独立した Windows だけの世界を作っておく Windows 2000 Advanced Server を用意し、 UNIX dows のファイル共有機能を利用してもよい。もちろん、 テムがある場合は、 Samba サーバーを介して、 Win- を用いた共有のほうが効果的である。 Windows シス ワークに接続されているシステムのあいだでは、 NFS は、おそらく間違った考え方であろう。つねにネット CVS のみを用いてホーム・ディレクトリを共有するの ・まずは NFS は、次のようにまとめることができる。 複数のシステムにまたがる情報管理の基本的な考え方 図 11 ネットワーク竟での実際の不堋 % echo $CVSROOT myserver : /home/suguru/repository % cvs checkout doc suguru@myserver ) S password : * * * * * * * * cvs server : Updating doc cvs server: Updating doc / 1998 U doc/1998/activity. txt 以降では、ネットワークにつねに接続されているデスク トップ・システム myserver 側に CVS リポジトリを用 意し、持ち歩くラップトップ PC からデスクトッフリの リポジトリを使う状況を考えていく。 myserver 側では、これまでに説明してきた CVS の利 用方法に従って CVS リポジトリを管理しているとしよ つ。 myserver 側のアカウントは suguru 、 CVS リポジ トリは /home/suguru/repository に用意されている。 ラップトッフィ則でこのリポジトリを使うには、工韆竟変数 CVSROOT を、 hostname : 7 ℃〃 os れ 071 ー佖カん という形式て指定する。ログインシェルが sh 系であれば、 ~/. profile などに CVSROOT=myserver : /home/suguru/repository export CVSROOT と言当しておくとよい。以上で準備は終りである。 使い方 工竟変数 CVSROOT を上記のように設定しておけば、 あとは通常の CVS と同しように利用できる。ただし、リ モートホストへのログイン処理が CVS によって起動され る点が異なる。図 11 は、ネットワーク環境で CVS を 利用したときのやりとりである。この図からも分かるよう に、リモートホストヘアクセスするため、ログイン処理と してパスワードを入力している。 リモートホストへのアクセスには、デフォルトでは rsh が使われる。したがって、サーバー側になるシステム ( こ の例では myserver) の ~/. rhosts にアクセスする側 ( こ の例ではラップトップ・システム ) を事前に登録しておけ 準備 ばログイン処理は不要になる。 59

3. UNIX MAGAZINE 2001年2月号

連載 /UNIX Communication Notes—O 図 7 Ⅵた Ob サーパーによって公開されるティレクトリを更新す 3. 更新プログラムの準備 おく。 する以長かならず cvs checkout でディレクトリを展開して public—html —i update—myhomepage public_html 図 8 自動更新のためのモジュールの定義 exit 0 cvs update & cd $HOME/pub1ic—htm1 export CVSROOT CVSROOT=/home/suguru/repository # ! /bin/sh るプログラム イルを史新したら、かならす cvs commit を実行して変 ともに実行されるプログラムを指定する。 modules ファ 記述を追加する。—i オフションに続けて、 cvs commit と ルの定義と同様にして、 CVSROOT/modules に図 8 の 次にモジュールを定義する。さきほど説明したモジュー 4. モジュールの定義 プログラムの名前を、、 update-myhomepage" とする。 クトリに実行可能な形式にして置いておく。このシェル・ グラムを、自分のコマンドサーチ・パスに含まれるディレ ロックが発生しないようにするためだ。このシェル・プロ ロックファイルが作られるが、それにともなってデッド 点である。 CVS では commit による処理の際に一日勺に を付けてバックグラウンド・ジョブとして実行している ここで主意してはしいのは、 cvs update コマンドに & 3. cvs update コマンドの実彳予 2. $HOME/public-html ディレクトリに移動 1. 工枻竟変数 CVSROOT の設定 グラムがおこなうのは、次の 3 つの処理だけである。 update を実行するシェル・プログラムである。このプロ の内容を更新するプログラムを用意する。図 7 は、 cvs ます、 Web サーバーによって公開されるディレクトリ されるように設定する。 を用意し、 CVS リポジトリの変更と同時に自重加勺に実行 こで、 $HOME/public-html を更新するプログラム 56 更をリポジトリに反映させる。 意 8 ここて指定するプログラムは、原則としてコマンドサー チ・パスに含まれるディレクトリに実行可能な形式で準備して おく。コマンドサーチ・パスに含まれないところに置かれてい る場合は、絶対パス朝定する。 5. 更新イ乍業 こまでの用意ができたら、コンテンツの準備に使って いたディレクトリをいったんチェックアウトする。 % cvs checkout public-html これで自動更新の準備か整ったことになる。 それでは、 index. html を更辛万してみよう。工デイタな どで index. html を編集してから cvs commit コマンド を実行すると、図 9 のようになるはすだ。最初のコマンド 実行の最後にロックファイルの情報か表示さ cvs up- date はロックファイルが解除されるまで待つ旨か表小さ れている。ロックファイルの解除は、 cvs commit コマ ンドの完了とともに実行される。そのために、更新プログ ラムのなかでは cvs update がバックグラウンドで実行 されるように設定している。事実、 cvs commit コマン ドの実行終了後に更新プログラムによって起動された cvs update コマンドか夫行されている。 ノート 2 cvs commit によって実行されるプログラムは、ファイ ルを展開した作業ディレクトリの CVS/Checkin. prog に指 定されている。このファイルは、上記の 4 までの準備をした あとで、あらためてイ′ド業ディレクトリとしてモジュール pub - lic-html を展開しないと用意されない。いったんチェックアウ トするのは、そのためである。 意 9 さきほども述べたように、 Web ページを更新するシェル・ プログラムでは、 cvs update をバックグラウンドで実行しな いとかならすデッドロックがを E する。 そ也のプログラムの実行 上記の Web ページの管理では、—i オフションを用い て、 cvs commit とともに自重加勺に実行されるプログラム を指定した。プログラム自重丿行のオプションは、これ以 外にも用意されている。 -i オフションも含めて、それぞれ について簡単に説明する。 ー 0 pro リ ファイルがチェックアウトされるたびに実行されるプロ UNIX MAGAZINE 2001.2

4. UNIX MAGAZINE 2001年2月号

UNIX Communication 山口英 Notes CVS をネットワーク環境で活用する 情報整理の技術 ( 5 ) CVS の高度な使い方 CVS は、たんなるリヒ、ジョン管理システムではなく、 拡張性に富む機能を提供している。今回は、 CVS のより モジューノレ 高度な使い方を紹介する。 UNIX MAGAZINE 2001.2 modules" というファイルである。編集する場合は、 の直下にある CVSROOT ディレクトリに置かれている ファイルを編集する。管理ファイルは、 CVS リポジトリ モジュールを定義するには、 CVS リポジトリの管理 モジュー ) レの定義 論工軸勺な管理単位である。 財懾が用意されている。モジュールとは、 CVS における レクトリ以下を 1 つのモジュール (module) として扱う この間題を解決するために、 CVS では特定のサプディ を管理していても避けられない。 るのか難しくなる。このような状兄は、 CVS でファイル リ構造バ架くなれはなるほど、どこに何があるかを把握す トリカ啝 I 段も作られるようになる。このため、ディレクト と、ディレクトリ構造は徐々に深くなり、サプディレク ディレクトリ構造を作る。管理するファイルか増えてくる にさらにサプディレクトリを用意するといった、階層的な ファイルを管理する場合、通常はディレクトリのなか レクトリ構造を保ったまま保存されている。 マンドによって追加したファイルの RCS ファイルがディ きた。たしかに、 リポジトリのなかをみると、 cvsadd コ 編集履歴をディレクトリ橢匿ごと記録する領域と説明して 前回まで、リポジトリとは管理対象のファイルに関する のファイルを妾変更するのではなく、かならす、 % cvs checkout CVSROOT を実行してファイルを編集し、その後に、 % CVS commit で変更を反映させる。 たとえば、石幵究関イ系のドキュメントをディレクトリ doc /2000/research に置き、これを CVS で管理していたと する。このディレクトリにはしばしばアクセスするので、 これをモジュール research2()00 として扱うようにしてみ る。ー勺な処理の手順は、図 1 のようになる。 ファイル modules の書式を図 2 に示す。このファイ ルでは、モジュールの定義を 1 行に 1 っすっ書き並べて いく。上記の例では、図 2-a の書式を使えはよい。すなわ ち、図 1 に示したように research2000 doc/2000/research をファイル mod ⅲ es に追加する。これによって、 CVS リ ポジトリの doc/2000/research をモジュール research 2000 として扱えるようになる。 注意 1 ディレクトリは、もちろん工竟変数 CVSROOT で設定 したリポジトリ・ディレクトリからの相対パスとして指定する。 定義されたモジュール research2000 に対して cvs checkout を実行すると、カレント・ディレクトリにサプ ディレクトリ research2000 が作られ、そこにモジュー ル内のすべてのファイルが展開される。 ファイルの指定 モジュールとして、あるディレクトリに置かれたファイ ルを指定するときは、ファイル名を空白文字で区切って列 53

5. UNIX MAGAZINE 2001年2月号

連載 /UNIX Communication Notes 図 9 自動更新の木好 % CVS commit ( コメントの入力 ) CVS commit : Examining Checking in index. html ; done new revision: 1 . 2 ; previous revision: 1 . 1 /home/suguru/repository/public—html/index. html ,v く一 index . html ' ' /home/suguru/repository/public—html ' ' cvs commit : Executing ' ' update—myhomepage cvs update : Updating cvs update : [ 21 : 30 : 03 ] waiting for suguru ) s lock in /home/suguru/repository/public—html cvs update : [ 21 : 30 : 33 ] obtained lock in /home/suguru/repository/public—html U index . html グラムア r 四を指定する。 rog には、モジュール名が 引数として渡される。この機能は、複数のユーサーがリ ポジトリを共有しているような場合、誰がモジュールを チェックアウトしたかを石忍する目的などに使える。 ェクスポートされるたびに実行されるプログラム rog を指定する。四には、モジューノレ名が引数として渡 される。これも、一。オプションと同モジュールをチ ェックアウトしたユーザーを石忍する目的などに使える。 ・—t r09 前回説明した cvs rtag コマンドとともに実行されるプ ログラム pr 四を指定する。 2m0 には、モジュール名 およびタグ名が引数として渡される。 cvs tag コマンド では起動されない。 ・¯u 7 ・・ 09 モジュールか更新される ( モジュールのトップ・ディ レクトリで cvs update が実行される ) たびに実行され るプログラム 2m9 を指定する。四の引数として、そ のモジュールのリポジトリの糸寸パスか渡される。 ・一 1 27 、四 cvs commit とともに実行されるプログラムを指定す る。四には、引数としてリポジトリ中の対象ディレ クトリの糸寸パスか渡される。 バイナリファイルの扱い ( 補足 ) 前回、バイナリファイルを扱う場合は一 k 。オプション を使うと説明した。私自身、バイナリファイルを扱うとき には、キーワード置換を避ける意味もあってこのオプショ ンを使ってきたからである。 UNIX MAG AZINE 2001.2 しかし、多くの方から通常は -kb オプションを使うべ きであるとい対商を受けた。たしかに、 -kb オプショ ンを指定すると、ファイルの言ムみや書出しの処理におい て完全 : ンヾイナリファイルとして扱われる。 UNIX 環境 では、バイナリファイルを扱う場合に -ko を指定しても とくに間題はないが、 DOS/Windows 竟ではいささか 具合が悪い。—ko オフションでは、バイナリファイルで あっても、読込みや書出しの際にテキストファイルとし ての行の取扱い処理が適用されるからである。このため、 DOS/Windows 竟で CVS を利用していると、行末文 字か書き換えられてしまう。 したがって、バイナリファイルを里する場合は、 -kb オプションをオ諚するようにしよう。 cvswrappers の啝」用 バイナリファイルを処理するとき、いちいち -kb オプ ションを付けてコマンドを実行するのは面倒である。たと えば、ファイルの拡張子が . gif や . jpg などの場合には、 自重加勺に -kb オプションを付けて処理してほしいと思う のではないだろうか。 CVSROOT/cvswrappers というファイルを利用す れは、そのための設定ができる。このファイルを言当する 場合は、モジュールの定義と同様、 CVSROOT をチェッ クアウトして更新し、最終的に cvs commit でリポジト リに反映させる。 ファイル cvswrappers では、 1 行に 1 っすっ定義を 言当していく。各行では、ファイル名のパターンごとにデ フォルトで適用するオプションを指定する。以下のように 設定すると、拡張子に . gif と . jpg カイ寸いたファイルはバ 57

6. UNIX MAGAZINE 2001年2月号

連載 /UNIX Communication N0tes 0 図 4 複数のティレクトリを指定するモジュールの定義 -a doc / 2000 doc / 1999 recentdocs 図 5 特定のティレクトリを除外するモジュールの定義 —a ! doc / 1998 ! doc / 1997 doc currentdoc 図 6 展開するティレクトリの指定 modu1eA —d options doc / 1999 ディレクトリとして 2 つのディレクトリ ( d 。 c / 2000 、 d 。 c / 1999 ) を指定できる。 意 4 ェイリアスを利用しない通常のモジュールの定義では、複 数のディレクトリは指定できない。図 4 の定義で一 a オフショ ンを付けすに言当すると、 d 。 c / 1999 はファイルとみなされる。 つまり、 d 。 c / 2000 / d 。 c / 1999 を指定したことになってしま う。通常のモジュールで複数のディレクトリを指定するときは & 記号を用いて言当する。 特定のティレクトリの除外 ェイリアスを用いたモジュールの定義では、特定のディ レクトリを除外して指定することもできる。図 5 の言当で は、モジュール currentdoc は、ディレクトリ doc 以下 のすべてのファイルのうち、ディレクトリ doc / 1998 と d 。 c / 1997 以外にあるものを指定することになる。 展開するティレクトリ窈諚 モジュールを展開すると、通常はモジュールと同名の ディレクトリカイ乍成される。これを変更したい場合は、 -d オプションを付けて定義すればよい。図 6 窈旨定では、モ ジュール moduleA はディレクトリ options に展開さ れる。 注意 5 -d オプションに続けて指定するディレクトリは、糸 スではなく相対パスで記しなけれはならない。 意 6 —d オプションは、工イリアスの定義では使えない。 CVS の里にともなうプログラムの実行 モジュールの定義では、 CVS での処理と同時に実行す るプログラムを指定できる。たとえば、特定のモジュール について cvs commit が実行されたとき、自動的にプロ グラムを重川乍させることかできる。 UNIX MAGAZINE 2001.2 Web ページの管理 CVS で web ページを管理しているような場合には、 ファイルの更新を CVS でおこなうと同時に、 Web サー ーカ壻理している領域のファイルも自重加勺に更新したい。 cvs のモジュールの機能を利用すれば、このような処理 が可能になる。 多くの Web サーバーでは、各ューサーのホーム・ディ レクトリに public-html というディレクトリを用意し、 http : / / 0 盟、ん os レ ~ 社れ佖 me / として公開するようになっている。以下では、 クトリを cvs て管理する手順をみていこう。 このディレ ホーム・ディレクトリ以下のどのディレクトリを公開する かは、 Web サーバーの設定によって異なる。これについては、 かならす web サーバーの設定を石忍すること。 1. コンテンツの準備 ます、適当な作業ディレクトリを作成し、 Web ページ を構成するファイルを用意する。さらに、前回説明した cvs import コマンドを用いて、 CVS リポジトリに新た なディレクトリとして追加する。説明の便を考えて、ここ では、 % cvs import public—html suguru private とし、 $CVSROOT て指定されたリポジトリの直下にデ ィレクトリを作ることにする。 2. コンテンツの公開 通常、これを Web サーバーに提供するファイルとする ためには、ホーム・ディレクトリで、 % cvs checkout public—html を実行する。これで、ホーム・ディレクトリの直 - ドに pub ー lic-html ディレクトリ ( 以下では、このディレクトリ を $HOME/public-html と表記する ) が作成され、最 こでも同様に上記のコマ 新のファイルが展開される。 ンドを実行し、提供するファイルを用意する。その後、 $HOME/public-html が Web サーバーによって正し く公開されるかを石忍する。 Web サーバーで公開されるディレクトリを CVS て管理 55

7. UNIX MAGAZINE 2001年2月号

連載 UNIX Communication N0tes 図 10 cvswrappers の効果 % file dogbert ・ gif dogbert . gif /home/suguru/repository/htdocs/dogbert ・ gif , v く一 Checking in dogbert . gif; done RCS file : /home/suguru/repository/htdocs/dogbert . gif ,v ( コメントの入力 ) % CVS commit % cvs add dogbert . gif dogbert . gif : GIF image data' version 89a , 127 x 216 % cvs status dogbert . gif done initial revision: 1 . 1 Fi1e : dogbert. gif Working revision : Repository revision : Sticky Tag: Sticky Date . Sticky Options : Status : 1 . 1 1 . 1 (none) (none) Up—t0—date Sat Dec 3 14 : 14 : 38 2000 /home/suguru/repository/htdocs/dogbert ・ gif , v イナリモードで扱われるようになる * ・ jpg ¯k 'b' * . gif —k たとえば、システムの性能は年を追うごとに急速に向上 私たちの作業環境は、以前とくらべて大きく変化した。 な効果を囎軍する。 前回も述べたように、 CVS はネットワーク竟で絶大 ネットワーク環境での利用 CVSROOT/cvswrappers と同しである。 . cvswrappers" というファイルを用意する。書式は、 して同様の設定をおこないたい場合は、そのディレクトリ ポジトリ本に景を与える。特定のディレクトリに限定 ファイル CVSROOT/cvswrappers での正は、リ ディレクトリごとの設定 れていることが分かる。 の内容を石忍すると、自重加勺に -kb オプションが付けら commit コマンドでリポジトリに反映してからリポジトリ る。このとき、一 kb オプションを付ける必要はない。 cvs 図 10 のように cvs add コマンドで管理対象にしたとす たとえば、 dogbert. gif という GIF 形式のファイルを、 58 し、 10 年ほど前ならスーパーコンピュータといわれたよ うな性能をもつシステムが、いまではデスクトップ PC と してイ屯つれている。コンピュータの価格も念敷に下がって いる。それにともない、 1 人のユーサーか馥数のシステム を用途ごとに使い分けることも珍しくなくなってきた。 私自身にしても、研究室には FreeBSD 、 Windows 2000 か下力するデスクトップ PC がそれぞれ 1 台ずつあ り、これらを目的に応して使い分けている。また、私の所 属する奈良先端科物支術大完大学には情幸財ヨ学センター カ壻理するシステムがあり、これをネットワーク経由で利 用している。さらに、外出時には FreeBSD と Windows 98 のデュアルプートのラップトップ PC を持ち歩き、自 宅にも FreeBSD や Red Hat Linux か動く作業用 PC か複数ある。 いまでは、このように複数のシステムを利用して作業し ているわけだが、ホーム・ディレクトリはシステムごとに 用意されているため、バラバラに管理せざるをえない。そ の結出張先で「あ、石幵究室にあったあのファイルが必 要だ」となって、学生諸君の手を借りて電子メールで送っ てもらったり、あるいは、最斤版のファイルが入ってい るラップトップ PC を持っていくのを忘れて取りに戻る など、さまざまな問題が発生している。 こういった状況でも、 CVS を利用すれは複数のシステ UNIX MAGAZINE 2001.2

8. UNIX MAGAZINE 2001年2月号

連載 図 1 モジュ UNIX Communication Notes ールの定義 % cvs checkout CVSROOT cvs checkout : Updating CVSROOT cd CVSROOT U CVSROOT/verifymsg U CVSROOT/taginf0 U CVSROOT/rcsinfo U CVSROOT/notify U CVSROOT/modu1es U CVSROOT/10ginf0 U CVSROOT/editinf0 U CVSROOT/cvswrappers U CVSROOT/config U CVSROOT/commitinf0 U CVSROOT/checkoutIist 図 2 ファイル modules の書式 ゝ % vi modules ( ファイル modules の編集 ) % cat modules research2000 doc/2000/research % CVS commit ( コメントの入力 ) Checking 1 Ⅱ modules ; /home/suguru/repository/CVSROOT/modu1es , v く一 new reviS1011.• 1 . 2 ; previous reVISion: 1.1 done modules cvs commit : RebuiIding administrative fiIe database (a) ディレクトリをモジュールとして定義 module 市ツ“ 6 市 r (b) ディレクトリ内のファイルをモジュールとして定義 module 市ツ s 社 6 市 7 ・ file file . (c) ほカモジュールを参照 module &rnoduleA &moduleB 挙する ( 図 2-b)0 たとえば、下記のように指定した場合、 cvs checkout rd0C2000 " を実行すると指定したファイ ル (). txt 、 b. txt) だけが展開される。 て d0C2000 doc/2000/research a. txt b . txt 注意 2 1 つのモジュールの定義は、ファイル modules に 1 行 で書く必がある。多数のファイルを指定する場合も、かなら す 1 行にまとめる。たとえは、 Emacs で auto-fill-mode を 使っていると行カ甘旨定した長さで折り返されてしまうので注意 すること。 ほかのモジュールの参照 あるモジュールを構成する際に、ほかのモジュールを 参照したい場合がある。あるいは、 1 つのモジュールを ほかの複数のモジュールの集合として定義したいことも よくある。そのような場合は、図 2-c のように、、 & " 記 号でモジュール名を指定すればよい。たとえは、以下の ように孑旨定すると、 rdocs はモジュール research2000 と research1999 から構成されるモジュールとして定義 される。 rdocs &research2000 &research1999 54 工イリアス 前項までの説明に従ってモジュールを定義した場合、 cvs checkout を実行するとモジュールと同名のディレク トリカイ乍られ、その下にファイルが展開される。モジュー ルを定義し、かっ従来のディレクトリ構造を利用したいと きは、工イリアス (alias) の機能を使うとよい。それには、 モジュールを定義する際にオプションとして -a を言己す る。たとえば、モジュール research2000 を図 3 のよう に定義したとする。この場合、 % cvs checkout research2000 を実行すると、ディレクトリ research2000 が作られ るのではなく、もとのディレクトリ構造と同様の d 。 c / research/2000 が作成され、その下にファイルが展開さ れる。 ェイリアスを用いたモジュールの定義では、モジュー ルを構成するディレクトリを複旨定できる。たとえは、 図 4 のようにすると、モジュール recentdocs の構成 図 3 工イリアス能を用いたモジュールの定義 research2000 -a doc/2000/research このモジュールを展開すると、 rdocs/research2000/ rdocs/research1999/... といったディレクトリ構 成となる。 ラも意 3 & 記号を用いてはかのモジュールを参照する場合は、構成 要素はすべてモジュール名でなければならない。 & を付加した モジュール名と、通常のディレクトリを並べて書くことはでき ない。 UNIX MAGAZINE 2001.2

9. UNIX MAGAZINE 2001年2月号

連載 / UN Ⅸ便利帖ーの ひととおり読んだら、以下のようにコマンドを実行しま す。 % xmkmf ー a % make これでカレント・ディレクトリに xcruise という夫行フ ァイルが作成されます。これをこのまま動かしてもよいの ですが、せつかく作ったのでインストールしておきます。 % su Password : # make install オンライン・マニュアルは用意されていないようです。 ほかに、 - XCruise. ad という名前のリソースファイルが あるので、これもインストールしておきましよう。これ は、 X ウインドウ標準のリソースファイル置き場 ( たと えば /usr/X11R6/Iib/XI l/app-defaults) にコピーす るか、自分しか使わないのであれば、自分がふだん使って いるリソースファイルにその内容を追加してもよいと思い 図 2 xcruise c/usr/src 付近を眺める Ve 1 に y : Current Galaxy:' / u ミ円 / ーー新第れ ー 0 メれ 0 CVS [ 0 ] But tO れ 2 But t 0 1 Forward Backward Quit F で 00Z0 ます 6 。 これで、インストールは完了です。 使ってみる xcruise の引数は以下のとおりです (X のアプリケー ョンとして一ヨ勺なものは省略します ) 。 —monochrome モノクロで表小する。 ン -titlemode ウインドウのタイトルバーに情報か表示 される。 —viewall ( ドット ) て始まるファイルも表小する。 ファイルシステムを、、航毎 " するため巣作は、以下の ようになっています。 マウスカーソルの移動進行方向を決める マウスポタン 1 前進 マウスポタン 2 彳あ旦 F キーー - 印芋停止 Q キー終了 起動すると、遠くにファイルシステム全体が見えるよ うな景色カ俵示されます。小さなファイルや個々のディ 6 各アプリケーションがリソースをどこから読み込むかについては X のオ ンライン・マニュアルの RESOURCES 節を参照してください。 118 レクトリなどは遠すぎて見えないかもしれませんが、マウ スポタンを押して近づいていくとだんだん細かく見えてき ます。 図 2 は、 FreeBSD の /usr/src に近ついたときの様子 です。 MakefiIe や README などの、、惑星 " や、 cvs 、 etc などの、、銀河 " が見えています。 sys から伸びている 線はシンポリック・リンクを表しています。 t3d t3d は Bernd Paysan さんか開発した日で、立イ勺 に表現されたポーノレで針と文字盤を形作っています。しか も、それらがうねうねと動きながら、左右に首を振るよう に回転します。また、時計の中心が 1 秒に 1 回心臓のよ うにキ力します。しばらく見ていても飽きません。 インストール t3d のアーカイプは、 t3d. shar. gz という名前で作者の ページ 7 から取得できます。これは、シェル・アーカイプ (SHell ARchive) という形式のファイルを gzip で圧縮 したものですから、次のようにして展開します。 % gunzip -c t3d. shar ・ gz ー sh するとカレント・ディレクトリにファイルが展開される ので、次のでインストールします。 % xmkmf —a % mak e % su Password : 7 http://www.jwdt.com/-paysan/ UNIX MAGAZINE 2001.2

10. UNIX MAGAZINE 2001年2月号

UNiX MAGAZINE CONTENTY 2001 / 去 特集 37 VMware で UNIX マルチ OS ェミ、レータ VMware 122 ・ " 大江将史 NetBSD のインストールと設定 ・ " 白崎博生 いきなり電源を切れる Windows UNIX Communication Notes ・・・・ " 山口英 情報整理の技術 ( 5 ) ネットワーク環境での CVS の利用 WWW サーバーの育て方・・・・・・井澤志充 Ja aScript と C を組み合わせてみよう 新・倉敷芸術科学大学のネットワーク構築・ ・ " 小林和真 Cisco ルータの基礎 ( 5 ) BSD をハックする・・・・・・齊藤明紀 ファイル・ディスクリプタを渡す ( 2 ) 遠隔オフィスとの接続・・・・・荒井美千子 ネットワーク接続の技術 Daemons & Dragons ・・・・••WiIIiam LeFebvre DNS による負荷分散、今後の動向予測 プログラミング・テクニック・・・・・・多治見寿和 flex ( 2 ) Java Advisor David DetIefs 気分転換のための計算 UN Ⅸ便利帖・・・・・・宮下健輔 イロモノいろいろ COVER, CONTENTS DESIGN ・ MORIYA, KAZUO (AUDREY THE DESIGN) 連載 53 82 90 99 105