■第2章 CVSの導入 ■■2.1 はじめに CVSを使ってみるためには、システムにCVSが入っていないといけません。入ってなければ、インストールが必要になります。インストールの方法には難しいものから簡単なものまでいろいろあって、利用者各自が自分のスキルを見極めて取り組むことが大切です。本書では、利用者として、次のようなタイプを想定しています。 @ソースコードからインストールしないとダメという人 Aパッケージを使ったインストールでないとダメという人 BUNIXはちょっとダメという人 CVSを活用しようと考える人は、一般的に@のタイプが多いように思います。ということで、本書ではまず難しいソースコードからコンパイルして作る方法を、次にちょっと難しいかもしれないRedHat Linuxのパッケージ管理機構RPMを利用する方法、最後に最も簡単だと思われるWindowsマシンへWinCvsをインストールする方法を順を追って説明してみたいと思います。どの方法もさっぱりな人は、詳しい人を探して入れてもらってください。CVSが既にインストールされていて、すぐに使える状態であれば、続く第3章(P.55)から読みはじめてください。 なお、CVSの現在の最新版はバージョン1.11ですが、Windowsとファイル交換する場合の日本語コード変換対応が現時点では難しいため、本書ではバージョン1.10.8を中心に説明します。1.11では、versionコマンドが追加され、そのほか細々とした仕様変更がおこなわれていますが、基本的な部分は変わっていません。インストール方法もほとんど変わりません。注意することがある場合にはその都度書くことにします。 ■■2.2 一から自分で作る さて、ディープな人はやはりソースからインストールしたいんじゃないかと思います。ちなみに、SolarisやIRISなど、商用UNIXのユーザはだいたいここからはじめるしかなかったりします。 とはいえ、難しく考える必要はありません。CVSはOSの違いを吸収してくれるautoconfというツールに対応しているので、余程変わったOSでなければ、スムーズにインストールできるはずです。 ■■■2.2.1 構築用ツール群の準備 まず、商用UNIXを利用している方は、あらかじめ次のツールを用意しておいた方がよいでしょう。これらのインストールについての詳細は、配布セットに付属するドキュメントを参照してください。   GNU C Compiler(以下gccとします) コンパイラはgccでなくとも問題ないとは思いますが、結果は確実ではありません。   GNU make OS付属のmakeだと、解釈できない文法もあります。GNU makeもインストールしておきましょう。   GNU patch Solarisのpatchコマンドでは、knjwrp patchが通りませんでした。GNU patchを利用した方がよいでしょう。   GNU texinfo texinfoはインストールの時に必要になります。マニュアルを必要とせず、インストールを強制的にスキップさせることのできる人はインストールの必要はありません。   これらのツールは、GNUプロジェクトホームページから辿れば見つけることができます。それぞれ、2000年12月の段階での最新版を表2.1に示します。 gcc-2.96については開発途上なため2000年12月11日の時点のスナップショットです。CVSで直接取ることもできます。 詳しくは、GCCのホームページを見てください。   ▼GNUプロジェクトホームページ URL http://www.gnu.org/ ▼GCCホームページ URL http://www.gnu.org/software/gcc/gcc.html   表2.1 構築用ツールへのポインタ ツール名 バージョン ホームページ GCC (安定バージョン) 2.95.2 http://www.gnu.org/software/gcc/gcc.html GCC (開発者バージョン) 2.96 http://www.gnu.org/software/gcc/gcc.html GNU Make 3.79 http://www.fsf.org/software/make/make.html patch 2.5.4 http://www.fsf.org/software/patch/patch.html texinfo 4.0 http://www.fsf.org/software/texinfo/texinfo.html ■■■2.2.2 展開用ツールの準備 次に、 圧縮された形態で配られているソースコードを展開するためのツールを用意しましょう。   gzip 最近ではbzipという形式も普及してきています。   tar tarは、GNU tarだと展開が少し便利になるという程度なので、OS付属のtarでも構いません。   それぞれ2000年12月の段階での最新版を【表2.2】に示します。 表2.2 展開用ツールへのポインタ ツール名 バージョン ホームページ gzip 1.2.4 http://www.gzip.org/ tar 1.13 http://www.gnu.org/software/tar/ これら、GNUのツール類の最新バージョンは、手近なGNUのFTPミラーサイトからダウンロードしてください。これらのツールについては、一応この本のサポートページからもダウンロードできるようにしておきますが、各ホームページで最新版を調べて入れる方がよいです。   ▼GNU FTPミラーサイトのリスト URL http://www.gnu.org/prep/ftp.html ■■■2.2.3 パッチファイルの準備 Windows上のクライアントプログラム(特にWinCvs)とUNIXでやりとりする場合に、ログメッセージやファイルに含まれる日本語コード(Shift-JISとEUC)を自動的に変換するようにしてくれるパッチがあります。Windowsマシンをクライアントにせず、UNIXのみで作業をおこなう場合はEUCしか出てきませんから、このパッチを組み込む必要はありません。 以下の説明ではパッチをあてる手順を含めて説明しますが、組み込まない場合にはそれを飛ばしてください。 このパッチは、knjwrp patchという名前で知られていて、富士写真フイルムの河田 幸博さん、そふと庵の加藤 裕史さん、それからCVS-MLの協力者によって開発されています。2000年11月時点では、cvs-1.10.8用が公開されていますが、cvs-1.11には未対応です。この本が出るころには対応されているかもしれませんので、チャレンジャーな方は、更新状況をチェックされてあててみてください。WinCvs / cvs knjwrpダウンロードなページから入手可能です。このパッチに関する詳しい情報もこのページに掲載されています。   ▼WinCvs / cvs knjwrpダウンロードなページ URL http://www.linkclub.or.jp/~tumibito/soft-an/cvs/download.html   なお、CVS MLは日本のCVSユーザのメーリングリストで、京都工芸繊維大学の西本 卓也さんによって運営されています。knjwrpに限らず、CVSの使い方に関して活発に情報交換がおこなわれています。詳しくは、西本さんのページ、バージョン管理システムCVSを使うをごらんください。 ▼バージョン管理システムCVSを使う URL http://www-vox.dj.kit.ac.jp/nishi/cvs/cvs.html ▼CVS-ML Mail Index URL http://www-vox.dj.kit.ac.jp/nishi/cvs/ml-log/maillist.html   また、CVS-ML Mail Indexでは、過去のログも見ることができますので、CVSを使用していて困ったときにはあたられるとよいかと思います。 ■■■2.2.4 CVSのインストール 第1章でも書いたようにCVSはdiffというコマンドに依存しています。以前は更にRCSにも依存していましたが、1.10.8では内部に互換性をもたせたコードが実装されているので、RCSをインストールする必要はありません。また、diffには、GNUのものと、OS付属のものとがあり、それぞれオプションを指定した際の動作に違いがあります。この違いは、あとあとCVSからdiffを呼び出す際にもオプションに違いが出て面倒なことが起こりますので、GNUのdiff(実際にはdiffutilsというパッケージです)をインストールすることをお勧めします。 なお、このdiffutilsというパッケージはフリーUNIXには通常入っています。   以下、インストールについて次の手順で説明します。 STEP 1: diffutilsのインストール STEP 2: CVSのインストール 実際にインストールを試みた環境はSolaris 5.5.1 (SunOS 2.5.1)です。 最初OS付属のpatchコマンドでknjwrp patchをあててみたのですが、うまくいきませんでした。 そのため、GNU patchを入れたところ、うまくあたりました。構築用のツールはCコンパイラ、makeともにGNUです。作業の前に、これらのコマンドがある場所をパスの先頭にしておく必要があり ます。例えば、これらのツールが/usr/local/binにあれば、次のようにパスを設定することになります。 SH系のシェルを利用している場合 % PATH="/usr/local/bin:/usr/bin:/usr/css/bin:/usr/usb"; export PATH CSH系のシェルを利用している場合 % set path=(/usr/local/bin /usr/bin /usr/css/bin /usr/usb) Solarisの場合、make、ar、ldといった構築のためのコマンドは、/usr/css/binに配置されています。これらのコマンドにもGNUに対応するものがあります。GNUのものを使わない場合には、/usr/css/binもパスに入れておかなければなりません。なお、GNUのar、ldを使用する場合には、configureでオプションを指定する必要があります。GNUよりシステム付属ツールを優先したい場合には、/usr/css/binを先に書いておく必要があります。 ■■■■STEP 1 diffutilsのインストール 最新版は、diffutils 2.7です。 このバージョンのソースコードはサポートページにも置いておきます。 ▼diffutilsホームページ URL http://www.gnu.org/software/diffutils/diffutils.html GNUのツールは、構築する環境の違いを判別してMakefileを作成してくれるautoconfというツール(これもGNUのツールです)に対応しているものがほとんどです。このため基本的には、configure、make、make installという3つのコマンドを実行すれば終りですが、最低限どこにインストールかだけは決めておいてください。特定の場所にインストールする場合は、その場所を--prefixというオプションで指定してconfigureコマンドを実行します。何も指定しないときには、/usr/localの下にインストールされます。 筆者の環境では都合により、GNUのツールを/usr/local/toolsにインストールしているので、ほかの場所にインストールする場合には、この場所を読み替えてください。/usr/localそのままの場合には指定しなくても構いません。ちなみに、root権限を持たない場合には自分の権限のある領域(例えば~/binなど)にインストールするように指定する必要があります。この例ではroot権限を使っています。 さて、具体的な手順に移りましょう。まず、ソースコードがないとはじまらないので、展開という作業をおこないます。GNUのソースファイルは一般にtarというコマンドでファイルやディレクトリを1つのファイルにまとめた後、compress、gzip、bzip2といった圧縮用のコマンドで圧縮されています。それぞれ、tar.Z、tar.gz、tar.bz2という拡張子をともないます。Windowsなどではtgzという3文字に省略されている場合もあります。展開するときには、この逆に圧縮を戻して、ファイルをバラバラの状態に戻します。diffutils-2.7.tar.gzが置かれたディレクトリに移動して次のような手順で展開します。 【図2.1】展開のプロセス ▼ % gzip -cd diffutils-2.7.tar.gz | tar xf - % ls diffutils-2.7 diffutils-2.7.tar.gz % cd diffutils-2.7 % ls COPYING cmpbuf.h diff.info-2 getopt.c regex.h ChangeLog config.hin diff.info-3 getopt.h sdiff.c INSTALL configure diff.info-4 getopt1.c side.c Makefile.in configure.in diff.texi ifdef.c stamp-h.in NEWS context.c diff3.c install-sh system.h README diagmeet.note dir.c io.c texinfo.tex alloca.c diff.c ed.c memchr.c util.c analyze.c diff.h error.c mkinstalldirs version.c cmp.c diff.info fnmatch.c normal.c waitpid.c cmpbuf.c diff.info-1 fnmatch.h regex.c xmalloc.c ▲ 1行目では、まず、tar.gz形式のdifftuils-2.7.tar.gzを展開しています。ここでは、gzipコマンドをオプションで圧縮解除モードにして使用しています。オプション-cは標準出力(通常は端末への出力)への出力指定、-dはdecompress(decompress=圧縮解除)の意味です。ここでは2つのオプションを組み合わせているので-cdと書いています。つまり、gunzip -cd=zcatというわけです。 zcat diffutils-2.7.tar.gzと書いても構いません。 1行目ではさらにパイプ(|)で出力結果の受け渡しをおこなっています。つまり、gzipコマンドが標準出力(通常は端末への出力)に書き出したデータをパイプでtarに渡し、オプション-x(extract=抽出)、-f(file=file以下を入力ファイルに指定)で展開をおこなっています。-は標準入力(通常は端末からの入力)を表わします。標準出力と標準入力をパイプでつないでいるので、出力は端末つまりディスプレイには表示されません。 続いて、ls -Fで見るとdiffutils-2.7/というディレクトリができています【2-3行目】。lsの-Fオプションはファイルの種類を表すようにするオプションです。例えば、名前の後ろに/がついていればディレクトリで、*がついていれば実行ファイル、@がついていればシンボリックリンクというようになります。とうことで、diffutils-2.7というディレクトリに移動(cd diffutils-2.7)【4行目】し、その中身を眺めてみます【5行目】。INSTALLやREADMEというファイルがありませんか? これらは通常どのパッケージにも収録されていて、インストール前に読んでおくことが必須となります。特に、INSTALLにはconfigureのオプションに何を渡すべきかということが書いてあります。英語で書かれていますが、頑張って読みましょう。 次は構築、つまりコンパイルして適切な場所に配置します。こうした構築には基本的にmakeが使われます。Makeは環境調査ユーティリティconfigureにより生成されるMakefileに基づいて、ファイルのコンパイルと適切なディレクトリへ配置する作業(インストール)を実際におこないます。つまり、gccやar、ldといった構築用のコマンドはこのMakefileの中に記述された内容に従って呼び出されます。その様子はログに出力されます。 【図2.2】diffutilsの構築 ▼ % ./configure --prefix=/usr/local/tools creating cache ./config.cache checking for gcc... gcc (中略) updating cache ./config.cache creating ./config.status creating Makefile creating config.h % make gcc -c -DHAVE_CONFIG_H -I. -I. -g -O -DNULL_DEVICE=\"/dev/null\" ./cmp.c (中略) gcc -o sdiff -g -O sdiff.o getopt.o getopt1.o version.o ▲ まず、インストール先のディレクトリ/usr/local/toolsを--prefixオプションで指定してconfigureをおこなっています【1行目】。実際は、この時何やら沢山メッセージが表示されるのですが、省略しています。これは、コンパイルに必要なコマンドやヘッダファイルがあるかどうかのチェックをおこなっているのですが、分からなければ気にしなくて構いません。途中で止まったりせずに、Makefileとconfig.hができれば成功です【7-8行目】。 次にmakeと打ちます【図2.2 9行目】。するとコンパイルがはじまります。configureしてできたMakefileに従って各モジュールのコンパイルとリンクがおこなわれる様子が表示されます(図では省略しています)。これも途中で止まったりせずに、sdiffまでリンクが済んだら成功です【最終行】。 もし途中で止まってしまったらどうしましょう? もちろん、プログラミングに自信があるならハックして、パッチを送るのもよいでしょう。筆者がほかのプログラムの構築で出会ったことのあるトラブルは、大抵ヘッダの定義がシステムのものと食い違っているとか、マクロの#ifでの制御がうまくいってないなどのレベルです。それ以上のものは、探せばネットワーク上にパッチが落ちていたりします。逆に、あなたがプログラマでなければ、diffutilsの開発者に助けを求めるしかありません。なお、diffutilsなど一般に広く使われているプログラムでは滅多にそういうことはありません。実際、diffutilsはもうかなり安定したツールですから、たいてい簡単にコンパイルに成功するでしょう。 【図2.3】インストール ▼ % su Password: # csh # source ~mika/.cshrc % make install /bin/sh ./mkinstalldirs /usr/local/tools/bin /usr/local/tools/info for p in cmp diff diff3 sdiff; do \ ./install-sh -c $p /usr/local/tools/bin/`echo $p | sed 's,x,x,'`; \ done { test -f diff.info || cd .; } && \ for f in diff.info*; do \ ./install-sh -c -m 644 $f /usr/local/tools/info/$f; \ done ▲ インストールは単にmake installとするだけです。ただし、書き込み権限がないディレクトリにはインストールできないので、rootになって【1-2行目】インストールしています【5-13行目】。途中shが使いにくいので、シェルをcshに設定し【3行目】、PATHなどの環境を揃えるために、sourceコマンドで自分の環境設定ファイル.cshrcを読み込んでいたりします【4行目】が、これは各自の好みによります。 以上で、diffutilsは簡単にインストールできました。which diffとして、ちゃんとインストールされているか確認してみましょう【図2.4】。whichコマンドは任意のコマンドの完全なパス(インストールされたディレクトリとコマンドそのもの)を教えてくれます。なお、環境によってはwhichではなくて、typeじゃないとうまくいかないかも知れません。適宜、その辺は読み替えてください。 【図2.4】入ってる入ってる ▼ % which diff /usr/local/tools/bin/diff ▲ ■■■■STEP 2 CVSのインストール 次はCVSのインストールです。knjwrp patchをあてる過程を説明するため、バージョン1.10.8を使って説明をします。最新バージョンの1.11のインストール方法は、パッチをあてる手順を除けばバージョン1.10.8の場合と同じです。ソースコードはサポートページに置いておきます。それぞれファイル名は次のようになります。 cvs-1.10.8ソースコード →cvs-1.10.8.tar.gz cvs-1.10.8へのknjwrp patch →knjwrp20000719 cvs-1.11ソースコード →cvs-1.11.tar.gz もちろん自分で配布元からダウンロードしても構いません。 次の作業で使いますので、cvs-1.10.8.tar.gzとknjwrp20000719はダウンロード後、同じディレクトリに配置してください。 【図2.5】展開 ▼ % zcat cvs-1.10.8.tar.gz | tar xf - % ls cvs-1.10.8 cvs-1.10.8.tar.gz knjwrp20000719 ▲ アーカイブを展開する方法はこれまでと同じです【図2.5】。今回はzcatを使ってみましょう。このとき、「.Zがついてない」というようなエラーが出たら、それはgzipパッケージのzcatではないということです。環境変数PATHの設定を確認してください(/usr/binが先に書かれてませんか?)。ls -Fコマンドを打ってcvs-1.10.8ディレクトリができていることを確認してください。また、knjwrp20000719というファイルも並んでいることを確認してください。並んでいない場合は、ここでにknjwrp20000719を置いてください。次頁では、このknjwrp20000719がこの作業領域にあるという前提でパッチをあてる作業をおこないます【図2.6】。 【図2.6】パッチをあてよう ▼ % cd cvs-1.10.8 % ls BUGS MINOR-BUGS build.com cvsnt.mak src COPYING Makefile.in config.h.in diff stamp-h.in COPYING.LIB NEWS configure doc tools ChangeLog PROJECTS configure.in emx vms ChangeLog.zoo README contrib install-sh windows-NT DEVEL-CVS README.VMS cvs-format.el lib zlib FAQ TESTS cvs.spec man HACKING TODO cvsnt.dsp mkinstalldirs INSTALL acconfig.h cvsnt.dsw os2 % patch -p1 < ../knjwrp20000719 (Stripping trailing CRs from patch.) patching file INSTALL (中略) (Stripping trailing CRs from patch.) patching file src/wrapper.c % ls BUGS INSTALL.jp TODO cvs.spec man COPYING MINOR-BUGS acconfig.h cvsnt.dsp mkinstalldirs COPYING.LIB Makefile.in ack139 cvsnt.dsw os2 ChangeLog NEWS build.com cvsnt.mak src ChangeLog.zoo PROJECTS config.h.in diff stamp-h.in DEVEL-CVS README configure doc tools FAQ README.VMS configure.in emx vms HACKING README.jp contrib install-sh windows-NT INSTALL TESTS cvs-format.el lib zlib % more README.jp ▲ パッチをあてる前に、cvs-1.10.8のディレクトリの中に降ります【1行目】。ちょっと中身を確認して【2-11行目】、一つ上のディレクトリに置いてあるパッチをあてます。patchコマンドはその入力に標準入力しか受け付けないので、リダイレクション(<)でパッチファイルの中身を渡しています【12行目】。 ▼ cat ../knjwrp20000719 | patch -p1 ▲ のように、catとパイプ(|)で渡しても構いません。同じことです。 ここではさっさとあててしまってますが、普通は作業前にあらかじめパッチファイルの中身を眺めてから作業します。なぜかというと、差分が取られたときのディレクトリの位置と、あてるときのカレントディレクトリの位置が違っているとうまくあたらないことがあるからです(「ディレクトリがない」などのエラーが表示されます)。 例えば、このknjwrp20000719の一番最初の対象ファイルは、 ▼ --- cvs-knjwrp/INSTALL Mon Jul 17 00:45:59 2000 ▲ と指定されています。ここに書いてあるcvs-knjwrpというディレクトリは、実はとっても邪魔で、取ってしまわないとうまくあたりません。【図2.7】のように、patchコマンドをそのまま実行すると、少なくともサブディレクトリになった段階で、パッチをあてる対象ファイルが見つからないと文句を言ってきます【図2.8 5行目】。ディレクトリをとる調整は、-pというオプションでします。ここでは、1個取るので、-p1とします。これはパッチをあてるファイルを指定したパスの頭から1つディレクトリを無視するという意味です。ディレクトリを2つ無視したければ、-p2としてください。取りすぎてもおかしくなります。あてるファイルもわからなくなってしまいます【図2.8】。 ちなみに、patchコマンドが止まって入力待ちになってしまった時には【図2.7 12行目】、Ctrl-Cでやめることができないので、Ctrl-Zで一旦中断し、そのあとkill(プロセスを殺すコマンド)を-KILLオプション(強制終了)をつけて実行します【図2.7 18行目】。引数に指定する対象プロセスはjobコマンドか、psコマンドで調べることができます。止まっているプロセスかバックグラウンドのプロセスを調べるにはjobコマンドでします。psはjobで見えないプロセスを調べるときに使います。今回はjobで調べています【図2.7 16行目】。jobコマンドで調べて得られる番号には%をつけます。これはpsで得られるプロセス番号と区別するためです。killコマンド実行後再度jobを実行すると当該プロセスが殺されている(killed)ことがわかります【図2.7 19行目】。 【図2.7】そのまま実行する ▼ % patch < ../knjwrp20000719 (Stripping trailing CRs from patch.) patching file INSTALL (中略) can't find file to patch at input line 5977 Perhaps you should have used the -p or --strip option? The text leading up to this was: -------------------------- |Index: cvs-knjwrp/contrib/log.pl |diff -c cvs-knjwrp/contrib/log.pl:1.1.1.1 cvs-knjwrp/contrib/log.pl:1.2 |*** cvs-knjwrp/contrib/log.pl:1.1.1.1 Mon Jul 17 00:28:15 2000 |--- cvs-knjwrp/contrib/log.pl Mon Jul 17 00:46:03 2000 -------------------------- File to patch: ^Z Stopped (user) % jobs [1] + Stopped (user) patch < ../knjwrp20000719 % kill -KILL %1 % jobs [1] Killed patch < ../knjwrp20000719 ▲ 【図2.8】-p2オプションをつけて実行する ▼ % patch -p2 < ../knjwrp20000719 missing header for context diff at line 5 of patch (Stripping trailing CRs from patch.) can't find file to patch at input line 5 Perhaps you used the wrong -p or --strip option? The text leading up to this was: -------------------------- |Index: cvs-knjwrp/INSTALL |diff -c cvs-knjwrp/INSTALL:1.1.1.1 cvs-knjwrp/INSTALL:1.2 |*** cvs-knjwrp/INSTALL:1.1.1.1 Mon Jul 17 00:28:04 2000 |--- cvs-knjwrp/INSTALL Mon Jul 17 00:45:59 2000 -------------------------- File to patch: ^Z Stopped (user) % jobs [1] + Stopped (user) patch -p2 < ../knjwrp20000719 % kill -KILL %1 % jobs [1] Killed patch -p2 < ../knjwrp20000719 ▲ 特に問題なくパッチがあたればオッケーです。ちなみにパッチあてに失敗すると、元のファイル名に.rejというサフィックスの付いたファイルができ、そこに失敗した部分が記録されます。目的のバージョンのちがうファイルにあてる場合などは、行番号がずれてpatchコマンドがあてきれず、ギブアップしてしまうことがあります。そういうときは、仕方がないので、手であてることになります。具体的にはエディタで対象ファイルを開いて文字列を検索し、.rejのついたファイルと比較してカットアンドペーストしたり、いろいろ矛盾のないように編集するわけです。が、そんな作業は今回は必要無いはずです。 さて、ここでlsをしてみると、パッチをあてる前と比べて、README.jp、INSTALL.jpなどいくつかファイルが増えているのがわかると思います。これらは、日本語で書かれているので、ぜひ読んでおいてください。コード変換をする場合の注意点などが書いてあります。 【図2.9】configure ▼ % ./configure --prefix=/usr/local/tools creating cache ./config.cache (中略) creating src/options.h ▲ 次はconfigureです。configureの手順はこれまでと同じです【図2.9】。knjwrp patchをあてたので、次のようなオプションが増えています。 --disable-kanji →漢字を使わない --enable-sjis →クライアントにSJISを出力する これらは今回の目的にはあまり関係ないので詳細は省きます。追加オプションの使い方についてはパッチの当たった、INSTALLファイルや、README.jp、INSTALL.jpを見てください。 【図2.10】構築 ▼ % make >& m.log& % tail -f m.log ▲ 次はmakeです【図2.10】。今回はちょっとログをファイル(m.log)にリダイレクト(>&)してとってみました【1行目】。構築時間が長いため、ログをとっておかないと不便なためです。例えば、途中で止まってしまったときなどにログがないと、原因を探すために、もう一度やりなおさなければなりません。ログの保存中、様子が見えないと嫌なので、tailというコマンドの-fオプションで、m.logの様子を出力させます【2行目】。試してみてください。はじめて実行したときは「おおっ」と思いますよ(難点はmakeの実行が終ったときがわかりにくいことですけど)。makeが終了して止まったままになったら、Ctrl-Cでtailコマンドを終了してください。make中のログは、m.logに保存されていますので、いつでも見ることができます。 【図2.11】インストール ▼ % su Password: # PATH=/usr/local/tools/bin:/usr/bin:/usr/sbin;export PATH # make install Making install in intl (中略) make[1]: Leaving directory `/home/work/gnu/texinfo-4.0' ▲ root権限でインストールします【図2.11】。今回は、shで、環境変数PATHの指定もじかに打ち込んでみました【3行目】。こっちの方がちょっとクールな感じ。ま、好きずきですけどね。make installでインストールがうまく終了すれば【4行目】、最終行は【7行目】のようになるはずです。texinfoがインストールされていないと途中で止まるので、うまく処理をスキップできない人はインストールしておいてくださいね。 では、最後にちゃんとcvsコマンドがインストールされたか確認してみましょう【図2.12】。先程も出てきたwhichコマンドを使います。ありましたか? 【図2.12】入ってる入ってる ▼ % which cvs /usr/local/tools/bin/cvs ▲ ■■2.3 RedHat Linuxで楽をする 最近のフリーUNIXでのインストールは、パッケージ管理機構を利用するのが 簡単です。Linuxでは、RedHat Linuxから発生したRPMという機構が広く使われています。本節では、このRPMを利用し、CVSをパッケージとしてインストールする方法を紹介します。なお、システムに既にインストールされている場合には、特に理由が無い限り、入れ換える必要はありません。「バージョンが古くて希望に合わない」、「knjwrp patchなどパッチをあてたものを使いたい」、などという場合は、独立にインストールするか、SRPMを利用して目的に合わせたRPMを作成・インストールする必要があります。ここで、SRPMというのはソースコードとRPMの作り方が一体になったソースパッケージのことです。詳しくは2.3.2項「SRPMからRPMを作ってみよう」で説明します。 本節では、次のような利用者環境を想定して、RPMからのインストール方法と、knjwrp patchを組み込むためにSRPMをいじってRPMを作成する方法を紹介します。なお、本書ではRedHat Linux(i386)を中心に話を進めます。 システムにCVSがインストールされていない CVSはインストール済みだけど、より新しいバージョンを利用したい システムにCVSがインストールされているかどうか調べるには次のようにrpmコマンドを実行します。 【図2.13】CVSが入っているかな? ▼ % rpm -q cvs cvs-1.10.2-1 ▲ rpmコマンドに問い合わせ(query)の意味の-qオプションを指定して、パッケージ名cvsを渡します【図2.13】。ちなみに、この例のシステムに入っているcvsは1.10.2と少し古いようです。 ■■■2.3.1 RPMをそのまま使う CVSがシステムにインストールされていなかったら、システムに合ったRPMパッケージをどこからか入手してインストールする必要があります。OSのディストリビューション内に入っているものを使うのがいちばん楽です。ただし、OS付属のものは最新とは限りませんし、knjwrp patchもあたっていません。 ■■■■RedHat Linux 6.2J(cvs-1.10.7)の場合 RedHat Linux 6.2Jでは、cvs-1.10.7が収録されています。cvs-1.10.7はOSのCD-ROMに収録されていますが、RedHat社のftpサイト、またはそのミラーサイトからも入手できます。 ▼cvs-1.10.7(RedHat Inc.) URL ftp://ftp.redhat.com/redhat/redhat-6.2-ja/i386/RedHat/RPMS/cvs-1.10.7-7.i386.rpm ここで、末尾のrpmの前についているi386というのは、このパッケージがCPUがi386系のPC/AT互換機向けのものであることを意味しています。Alpha、Sparcなどi386以外のアーキテクチャを利用する場合には該当するファイルをそれぞれ利用してください。それぞれalpha.rpm、sparc.rpmというサフィックスが付きます。 ■■■■RedHat Linux 7.0J(cvs-1.10.8)の場合 RedHat Linux 7.0Jでは、cvs-1.10.8が収録されています。7.0Jではシステムが用いるrpmコマンドのバージョン違いや、ディレクトリ構成の変更などがあり、互換性に問題があるようですので、6.2Jでは使えません。cvs-1.10.8はOSのCD-ROMに収録されていますが、次のftpサイト、またはそのミラーサイトからも入手できます。 ▼cvs-1.10.8(RedHat Inc.) URL ftp://ftp.redhat.com/redhat/redhat-7.0/i386/ja/RedHat/RPMS/cvs-1.10.8-8.i386.rpm ■■■■RPM(バイナリ)パッケージのインストール これらのRPMを適当なところに置き(CD-ROM上のファイルを直接指定しても構いません)、rpmコマンドの引数にそのファイル名を指定すれば、インストールすることができます。rpmコマンドを使えば、引数としてURLを直接指定してもインストールできますが、ここではカレントディレクトリにrpmパッケージをコピーした場合を例としてあげておきます。 CVSを新規にインストールする場合は、-iオプションを使います【図2.14】。 【図2.14】RPMのインストール ▼ % rpm -i cvs-1.10.7.i386.rpm ▲ 既に入っているCVSを新しいバージョンに置き換える場合は、-Uオプションを使います【図2.15】。 【図2.15】RPMのアップデート ▼ % rpm -U cvs-1.10.7.i386.rpm ▲ -eオプションで削除【図2.16】しておいてから、-iオプションでインストールしても構いません。マイナーアップデートの場合は、この手段を使います。また、--forceオプションで強制的に上書きという方法もありますが、あまりお勧めしません。 【図2.14】RPMの削除 ▼ % rpm -e cvs ▲ ■■■2.3.2 SRPMからRPMを作ってみよう 最新版を利用したい場合や、パッチをあてたバージョンが欲しい場合には、ソースコードからコンパイルするしかありません。しかし、2.3.1節で述べたパッケージマネージャから独立して入れてしまうと、アンインストール時に必要のないファイルが残ったり、うっかり上書きインストールしてしまったりと、困ったことが起こるかもしれません。それでもよいという人は、2.2節の方法でインストールしてください。この節では、ある程度自力でRPMを作成する方法を紹介します。 ソースコードと作り方が一塊になったSRPMから、RPMを作る方法を詳しく述べていると、それだけで本が一冊書けてしまうので、本書では要点のみを取り上げます。なお、SRPMの作り方に関して詳しく知りたい人は、次のRPM-BUILD-HOWTO、または、『らぶらぶLinux3「もっと知りたい」人のためのパッケージ管理&構築入門』という書籍を参照してください。 ▼らぶらぶLinuxサポートページ URL http://member.nifty.ne.jp/village/ ▼RPM-BUILD-HOWTO(RPMを使ったパッケージの作成方法) URL http://www.linux.or.jp/JF/JFdocs/RPM-BUILD-HOWTO.html 基本的にOS付属の最新のSRPMから作るといじる部分が少なくて済みますが、微妙な部分がうまくいかないかもしれません。パッチをあてるためではなく、単に新しいバージョンにしたいだけの場合は、あくまで人身御供のつもりでいてください。 ■■■■RedHat Linux 6.2Jに付属のSRPMから作る SRPMはOSが商品であればソースCD-ROMに収録されているでしょう。仮に収録されていない場合でも、次のftpサイトか、またはそのミラーサイトからダウンロードすることができるでしょう。 ▼cvs-1.10.7-7.src.rpm URL ftp://ftp.redhat.com/redhat/redhat-6.2-ja/SRPMS/SRPMS/cvs-1.10.7-7.src.rpm cvs-1.10.8にするのでなければ、knjwrp patchも1.10.7用を用意しましょう。 ▼cvs-1.10.7用knjwrp patch URL http://www.linkclub.or.jp/~tumibito/soft-an/cvs/cvs-1.10.7.knjwrp.uue.txt これをデコードしたものを独自に作成しました。これもサポートページから次のファイル名でダウンロードできます。 DL knjwrp.tar.gz(cvs-1.10.7.knjwrp.uue.txtをuudecodeしたもの) cvs-1.10.8までは試してみたことがあります。これについてはi386.rpmもサポートページに置いておきます。 DL cvs-1.10.8-1.i386.rpm DL cvs-1.10.8-1.src.rpm cvs-1.11はビルドできるものの、もしかすると不都合があるかも知れません。一応サポートページにはsrc.rpmのみ置いておきますが、バグがあったら連絡してください。なお、対応するknjwrp patchがないため、漢字コード変換機能はありません。 DL cvs-1.11-1 ■■■■RedHat Linux 7.0Jに付属のSRPMから作る 7.0Jの場合には、以下のSRPMから作ります。 ▼cvs-1.10.8-8.src.rpm(RedHat Inc.) URL ftp://ftp.redhat.com/redhat/redhat-7.0/SRPMS/i386/SRPMS/cvs-1.10.8-8.src.rpm 次のファイル名でサポートページにも置いておきます。 DL cvs-1.10.8-8.src.rpm 次にknjwrp patchですが、このバージョンにあてるにはかなり手直しが必要でした。筆者が最終的に使用したものを次の場所にサポートページに置いておきますので、これを使ってください。 DL knjwrp20000719-rhl7.0 #本当はパッチがちゃんとあたるようになるまで、色々やって1時間くらいかかりました。やっぱり大変です。 SRPMを加工するためには、まずSRPMファイルをrpmコマンドと-iオプションを使ってインストールします【図2.17 1行目】。インストールされる先は、通常は/usr/src/redhatというディレクトリですが、設定によっては変わっているかもしれません。このディレクトリの所有者は、通常rootですので、rootで作業するか、あらかじめ所有者もしくは書き込み権限をユーザが書き込めるように変更しておくとよいでしょう。また、ユーザの設定で、インストール先ディレクトリを変更してもよいでしょう(.rpmrcでできるはずですが、詳細は本書では触れません)。 以下では/usr/src/redhatを使用しているものとして話を進めます。 このディレクトリは5つのサブディレクトリを持っています。SPECSというのが、SPECファイルが置かれるところ、SOURCESというのが、構築に必要なソースコードとパッチが置かれる場所です。rpm -i xxx.src.rpmを実行すると、その中に含まれていたSPECファイルとソースコード/パッチがこれらのディレクトリにコピーされます。これらから実際の実行ファイルなどを構築する作業領域が、BUILDというディレクトリです。RPMSとSRPMSというディレクトリはできあがったRPMファイルとSRPMファイルを置く場所です。RPMSはマシンのアーキテクチャ毎にi386やalphaなどのサブディレクトリを持ちます。ここでは、i386しか使いません。 【図2.17】SRPMのインストール ▼ % rpm -i cvs-1.10.8-8.src.rpm % cd /usr/src/redhat % ls BUILD RPMS SOURCES SPECS SRPMS ▲ パッチをあてるためにSPECファイルを変更します。そのために、SPECSディレクトリに移動し【1行目】、念のため、元のファイルからコピーして作業ファイルを作ります。名前はなんでもよい(動作に影響することはありません)ので、とりあえず、cvs-j.specという名前でコピーします【図2.18 4行目】。 【図2.18】SPECファイルをコピーして作業ファイルにする ▼ % cd SPECS % ls cvs.spec % cp cvs.spec cvs-j.spec % ls cvs-j.spec cvs.spec ▲ cvs-j.specを編集します。編集の目的は大まかに、2点しかありません。パッチを入れ込むことと、パッチで増えた要素を最終結果に反映させることです。あとは、SPECファイルのバージョンアップということで、バージョンを1つ増やしておくとアップデートしやすいでしょう。 ■■■■@他のパッチとの関係を考えてパッチを入れ込む RPMの作成ためのファイル(SPECファイルと呼び、ファイル名末尾に.specを付けます)には、パッチのファイルを指定するための場所および記述法と、実際にそれらをあてる順番やオプションを指定する場所および記述法があります。興味がある人は、サポートページから、次のファイルをダウンロードし、該当箇所を探してみてください【図2.19、図2.20】。 DL cvs.spec 【図2.19】cvs.spec 8〜14行目 ▼ Patch0: cvs-1.10-tmprace.patch Patch1: cvs-1.10.7-fixinfo.patch Patch2: cvs-1.10.7-krb5-1.1.1.patch Patch3: cvs-1.10.8-krb4.patch Patch4: cvs-1.10.8-zlib.patch Patch5: cvs-1.10.8-auth.patch Patch6: cvs-1.10.8-errno.patch ▲ 図2.20 cvs.spec 42〜48行目 ▼ %patch0 -p1 -b .tmprace %patch1 -p1 -b .fixinfo %{!?nokerberos:%patch2 -p1 -b .krb5} %{!?nokerberos:%patch3 -p1 -b .krb4} %patch4 -p1 -b .zlib %patch5 -p1 -b .auth %patch6 -p1 -b .errno ▲ RedHat Linux 7.0に合わせるためのパッチが6つほどあるわけですね【図2.19】。 さてこの部分をいじるわけですが、このとき実際には、あててみて失敗しては最初からその前のパッチまであて直すといった試行錯誤を何度か繰り返します。ちなみに前準備のステージ(%prepステージ)まで処理を実行するrpmのオプションは、-bpです。 実際には、各パッチをあてる直前のファイルの状態が、各「%patchX -p1 -b .xxx」の.xxxというサフィックスのついた状態でバックアップファイルとして残されていますので、それらファイルにあてたり差分をとったりするとよいのだと思います。 今回はkrb4とauthのパッチとコンフリクトを起こしたので、その部分をいじってうまくパッチがあたるように修正したものを、サポートページに用意しました。 DL knjwrp20000719-rhl7.0 Column .specファイル中のkrb4, krb5 ちなみにkrb5やkrb4という文字列の混じったパッチはKerberosという通信の暗号化のための仕組みのためのものです。実際にパッチをあてる部分で、その仕組みが入っているかどうかでパッチをあてるか あてないかという判定をしているようです。 自分で頑張れる人は頑張ってみてもいいでしょう。その過程で、パッチをあてる順が、6番目になりました。その修正部分を【図2.21】および【図2.22】に示します。 【図2.21】kcvs-j.spec 8〜15行目 ▼ Patch0: cvs-1.10-tmprace.patch Patch1: cvs-1.10.7-fixinfo.patch Patch2: cvs-1.10.7-krb5-1.1.1.patch Patch3: cvs-1.10.8-krb4.patch Patch4: cvs-1.10.8-zlib.patch Patch5: cvs-1.10.8-auth.patch Patch6: knjwrp20000719-rhl7.0 Patch7: cvs-1.10.8-errno.patch ▲ 【図2.22】cvs-j.spec 43〜50行目 ▼ %patch0 -p1 -b .tmprace %patch1 -p1 -b .fixinfo %{!?nokerberos:%patch2 -p1 -b .krb5} %{!?nokerberos:%patch3 -p1 -b .krb4} %patch4 -p1 -b .zlib %patch5 -p1 -b .auth %patch6 -p1 -b .kanji %patch7 -p1 -b .errno ▲ ■■■■Aパッチで増えたファイルで必要なものを追加する 具体的には、ドキュメントおよび設定ファイルです。このパッチでは設定ファイルは増えてないようですので、ひとまず、README.jpとINSTALL.jpだけをドキュメントに追加しています【図2.23→図2.24】。 【図2.23】cvs.spec 80〜81行目 ▼ %doc BUGS FAQ MINOR-BUGS NEWS PROJECTS TODO README %doc doc/*.ps ▲ 【図2.24】cvs-j.spec 82〜83行目 ▼ %doc BUGS FAQ MINOR-BUGS NEWS PROJECTS TODO README README.jp INSTALL.jp %doc doc/*.ps ▲ ■■■■BSPECファイルのリリースバージョンを1つ上げる ソフトウェアのバージョンとは別に、RPMパッケージのバージョンというのがあります。正確には亜流になるので、他の手段をとるべきかもしれませんが、とりあえず、1つ上げておけば-Uオプションでバージョンアップしやすいので上げておきます【図2.25→図2.26】。 【図2.25】cvs.spec 4行目 ▼ Release: 8 ▲ 【図2.26】cvs-j.spec 4行目 ▼ Release: 9 ▲ 上のような修正を加えたSPECファイル(cvs-j.spec)を使って、RPMバイナリファイルを作成するには以下のようにします。ちなみに、ここでは環境設定が、i386のアーキテクチャのRPMファイルを作るように設定されていますので、i386向けのバイナリパッケージが生成されます。 【図2.27】RPMバイナリファイルを作成する ▼ % rpm -bb cvs-j.spec >& cvs-j.log& [1] 29337 % tail -f cvs-j.log ▲ 特に問題なく処理が終われば、/usr/src/redhat/RPMS/i386の下に、cvs-1.10.8-9.i386.rpmができます。もちろん設定によっては別の場所にできるかもしれません。cvs-j.logの最後に書き出した場所が記録されています【3行目】。 なお、途中でビルドをギブアップした人のために、筆者が作成したバイナリパッケージを用意しておきますので、人身御供になってもよいという奇特な方はご利用ください。 DL cvs-1.10.8-9.i386.rpm できたバイナリパッケージで既存のCVSをアップグレードするには次のように-Uオプションを使います。 【図2.28】できたRPMでシステムのcvsをアップグレードする ▼ % rpm -U ../RPMS/i386/cvs-1.10.8-9.i386.rpm ▲ さらに、更新したSPECファイルやパッチファイルを元に、独自のSRPMパッケージまで作成する場合は、-baオプションを利用します。あなたも、SRPM提供者として頑張ってみませんか? 【図2.29】SRPMファイルまで作成する場合 ▼ % rpm -ba cvs-j.spec >& cvs-j.log& ▲ このオプションで作成したものも、サポートページからダウンロードできます。上記の修正を施したSRPMを利用したい方はこれをダウンロードすればよいでしょう。また、単にcvs-j.specの中身が見たい人のためにcvs-j.specも置いておきます。 DL cvs-1.10.8-9.src.rpm DL cvs-j.spec 以上で、SRPMからの修正作成法は終りです。難しかったかも知れませんが、RPMという機構の利用法に少しでも興味を持って頂けたら幸いです。 Column WinCvs 1.2リリース! 執筆中に、WinCvs1.2がリリースされました。このバージョンは正式リリースです。これまでの1.1のベータで逐次加えられてきた機能が安定したという意味のリリースです。加えられた機能は次の通りです(ニュースより)。 @cvs-1.11に対応した。 A新しい閲覧用のフィルタが追加された。 B新しいTclのマクロが追加された。 Cルックアンドフィールが改善された。 Dcvsnt serverに対応した。 Eダイアログによるcvsへのサポートが増えた。 Fチェックアウトしたモジュールによる設定が増えた。 Gお魚さんが後ろ向きに動くようになった(そういえば…?)。 Hその他たくさん。 インストールする場合には、前の1.1のベータ版はアンインストールしてインストールしてください。なお、この版の日本語化キットである、「ごった煮」もリリースされています。 また、大きな変更があった場合はサポートページなどで、フォローしていきたいと思います。 ■■2.4 Windowsでもっとらくちん ■■■2.4.1 必要なファイルの準備 もっとも簡単なのはWinCvsをインストールすることでしょう。WinCvsというのは、Windows系OSの上で動く、CVSフロントエンドの1つです。つまり、通常コマンドラインで使われるcvsコマンドをボタンやメニューから選択すれば実行できるように工夫されたGUIです。実際内部的には、UNIXのものと同じコードから作られたcvsコマンドを呼び出して実行しています。ですから、挙動はこの本や他のマニュアルなどで説明されるものと同じです。実行されたコマンドは下のログ画面に表示されますので、何がおこなわれているのか確認する際に便利です。また、別のパッケージであるTclというソフトウェアをインストールすると、ログ画面で直接コマンドが実行できるようになります。メニューにふさわしいものが無いときなどに拡張機能を提供してくれます。 なお、この本ではWinCvsのメニューについては説明を省略します。本書に出てくるコマンドについては、WinCvsに同梱されてくるcvs.exeをMS-DOSプロンプトで実行するか、WinCvsメニューの管理(Admin)メニューの中にあるコマンドライン(command line)で実行するか、または前述のTclパッケージを利用して実行するかしてください。もちろん、該当するWinCvsのメニューを自力で探して実行されても構いません。そんなに難しくはないと思います。 GUI付のCVSフロントエンドには他にも、UNIX用、Macintosh用など含めていろいろなものがあります。WinCvsの開発プロジェクトであるCvsGuiでは他に、UNIX用のgCvs、Macintosh用のMacCvsを開発・配付しています。それ以外にも、CVShome.orgのリンク集からいくつかたどることができますし、付録B「CVSの関連ツール」でも紹介します。WinCvsは、筆者も実際に導入してみましたが、Windows 98、Windows NT、Windows 2000では特に問題なく使用できるようです。 ▼WinCvs.org URL http://www.wincvs.org/ ▼CVShome.org URL http://www.cvshome.org/ インストールに使用するものを【表2.3】にまとめます。 【表2.3】 ツール名 ホームページ パッケージ WinCvs 1.1b15 http://www.wincvs.org/download.html WinCvs11b15.zip WinCvs 1.1b17 http://www.wincvs.org/download.html WinCvs11b17.zip WinCvs1.1b5 / knjwrp20000719パッチ http://www.linkclub.or.jp/~tumibito/soft-an/cvs/download.html WinCvs11b15_sjis_knjwrp20000719.lzh WinCvs1.1b5 / knjwrp20001107パッチ http://www.linkclub.or.jp/~tumibito/soft-an/cvs/download.html WinCvs11b15_sjis_knjwrp20001107.lzh Tcl 8.3.2 http://www.scriptics.com/software/tcltk/download83.html tcl832.exe ■■■2.4.2 インストール作業 これらのうち必須となるツールは、WinCvsです。2000年11月段階のWinCvsの最新バージョンは、WinCvs 1.1b17です。前述のknjwrpパッチを利用しない場合はこの最新版を利用してもよいでしょう。逆に異機種間で日本語を含むファイルを交換する可能性がある場合は、WinCvs 1.1b15をインストールしてください。 UNIXサーバ上のリポジトリを使い、UNIXクライアントと日本語のファイルや日本語のログ を共有する場合には、WinCvs1.1b5にknjwrp20000719パッチをあてたものを追加して利用します。2000年12月現在WinCvs1.1b5にknjwrp20001107パッチをあてたものがリリースされたようですが、サーバとの互換性を保つために、WinCvs1.1b5にknjwrp20000719パッチをあてたものでの例を示します。インストールや使い方に大幅な変更はありません。本書が店頭に並ぶころには、また新しいバージョンが出ていると思いますので、上記のサイトのチェックをして最新版にチャレンジされるのもよいかと思います。 なお、このパッケージには日本語メニューと日本語ヘルプが付属しますので、それを目的として導入するのもよい考えです。最後のTclはこれまで述べたように、必ずしも必要ではありませんが、「俺のやりたいことがメニューにないぜぇ〜。うお〜。」という方は、インストールされてみてはいかがでしょうか。また、本書で取り上げる実行例の検証には、Tclのインストールが前提となっているものも含まれます。なお、Tclは後からインストールしても問題ありません。 本項では、このうち、WinCvs 11b15とWinCvs1.1b5 knjwrp20000719パッチをあてたもの、続いてTcl 8.3.2のインストールについて紹介します。 これらを1つのフォルダにまとめると、【図2.30】のようになると思います。 【図2.28】インストールのために用意したファイルたち image03.gif まず、WinCvsをインストールします。WinCvs11b15.zipは圧縮ファイルです。適当な解凍ツールで解凍・展開してください。ちなみに、この例ではeoというツールを使っています。サフィックス.zipはそのツールに対応づけられているのでeoのアイコンになっています。関連付けに問題がなければ、ダブルクリックで解凍・展開できるのですが、そのあたりは人それぞれだと思います。とにかく、解凍・展開してください。【図2.31】のようになるはずです。 【図2.31】展開してできるファイル群とインストーラ image23.gif ○キャプション「インストーラSETUP.EXEをダブルクリック」 解凍・展開されたファイル群の中に含まれている、SETUP.EXEがインストーラです。迷わず、ガシガシッとダブルクリックしてください。インストールが開始されます。英語のメッセージが【図2.32】のように表示されると思いますが、ひるまずに[Next]ボタンをクリックしましょう。この後も基本的にずっと[Next]ボタンを押していれば最後までインストールできると思います。 【図2.32】インストール開始のページ image08.gif ただし、途中で表示される「WinCvsのインストール先フォルダ」には注意してください。日本語版を使いたい場合には、そのフォルダの中のいくつかのファイルを入れ換えなければなりません。普通に何もしなければ、次のフォルダに入っているはずです。このフォルダは探して開けておいてください【図2.33】。 C:\Program Files\GNU\WinCvs 1.1 【図2.33】インストールされたファイル群 image17.gif 日本語版を使いたい場合には、これらのファイルのうち、いくつかを置き換えます。置き換えるファイルは、WinCvs11b15_sjis_knjwrp20001107.lzhという形で圧縮されていますので、これも適当なツールで解凍します【図2.34】。 【図2.34】日本語版 image19.gif cvs.exe(とライブラリcvs2ntlib.dll)がUNIXでのcvsコマンドと同じもの(正確にはknjwrp patchがあたったもの)です。wincvs.exeが日本語化されたWinCvsの本体で、CVS.HLP、WINCVS.HLP、tips.txtは、それぞれCVSとWinCvsの日本語版ヘルプファイルと、使い方のヒント(ワンポイント)としてプログラム内で呼び出すことのできる文章の元ファイルを日本語訳したものです。マウスでがさっと全部選択して、【図2.33】のWinCvs 1.1のフォルダに放り込みましょう。えい。 「上書きしますか」というメッセージが表示されるので、「はい」と答えて置き換えてしまいます。この操作をすべてのファイルに対しておこないます。置き換えが終わった後、整列してみると、【図2.35】のようになるはずです。 【図2.35】入れ換えて整列した後 image33.gif ○キャプション「置き換えられたファイル群」 これで、日本語メニューと日本語ヘルプが使えて、更にUNIXサーバとログやファイルの漢字コードが統一できる環境を手に入れました。 これらの機能に加え対話的にコマンドを打ち込みたいという人は、ここで、Tclをインストールしてもよいでしょう。 【図2.36】Tclのインストーラ image34.gif ○キャプション「tcl832.exeアイコンをダブルクリック」 Tcl 8.3.2は、他のファイルと違って、このtcl832.exeファイルがインストーラになっています。そこで特に何も考えずに、tcl832.exeをダブルクリックします(ぺんぺん)。すると、【図2.37】のようなインストールの開始画面になると思います。 【図2.37】Tclのインストール開始 image35.gif ○キャプション「[Next >]ボタンをクリックする」 後は、英語を眺めてもらいながらのインストールとなります。分からなかったら、[Next]ボタンを押して先に進めましょう。注意するところは、【図2.38】の何をインストールするか選ぶところくらいではないでしょうか。どうしても必要なのは、最初の「Tcl Run-Time Files」だけです。あとの2つはTclのサンプルコードとヘルプファイルなので、ハードディスクの空き容量が十分でない場合はインストールしなくても構いません。余裕がある場合はインストールしておいてもよいでしょう。 ちなみに、Tclというのは、いわゆるスクリプト言語といわれる類のプログラミング言語の一種で、それで、そのサンプルコードがついてくるわけです。 【図2.38】インストールするものを選ぶ image39.gif ○キャプション「このコンポーネントは必ずチェック」 ○キャプション「[Next >]ボタンをクリックする」 このパッケージは、インストール後再起動を必要とします。インストール作業の最後に再起動するかどうか聞いてくるので、他にソフトが動いていないことを確認して、再起動してください。[OK]ボタンをクリックします。もちろん、他の作業がある人は、その作業が済んだ後で再起動しても構いません。 【図2.39】再起動 image42.gif ○キャプション「[OK]ボタンをクリックする」 ■■■2.4.3 WinCvsの動作チェック さて、あなたにとって必要な手順が全て終ったらWinCvsを起動してみましょう。【図2.40】のような画面が出てくれば成功です。ちょっと設定が異なるかもしれませんから、似たような感じで起動したらオッケーです。 【図2.40】WinCvsの起動画面 image51.gif ○キャプション「ここにhelpと入力する」 Tclを入れた場合は、下のログ画面でhelpと打ってみると、【図2.41】のようなメッセージがぺろぺろっと表示され、動いていることが確認できると思います。このように、画面下のログウィンドウ上でコマンドが打ち込めるようになります。Tclをインストールした人は、本書で紹介するコマンドを直接入力してみてください。 【図2.41】TclのHelp image52.gif ○キャプション「helpコマンドの実行結果」 ちなみに、Tclを入れないときには「TCL is *not* available, shell is disabled」というメッセージが表示され【図2.42】、コマンドの実行はメニューを介してしかおこなえません。実行したいコマンドがメニューにない場合は、管理(Admin)→コマンドライン(Command line)を利用するか、Windows OSから直接DOSプロンプトを使ってください。 【図2.42】Tclが無いときのメッセージ notcl.gif ○キャプション「表示されたメッセージ」