[目次へ][第2章へ][2.1へ][2.3へ] 最終更新:$Date: 2002/09/12 01:25:32 $


■■ [2.1] 一から自分で作る
■■■ [2.1.1] GNUツール群の準備
■■■ [2.1.2] 漢字コード変換をどうするか考える
■■■ [2.1.3] CVSのインストール


■■2.1 一から自分で作る

さて、ディープな人はやはりソースからインストールしたいんじゃないかと思います。ちなみに、SolarisやIRISなど、商用UNIXのユーザはだいたいここからはじめるしかなかったりします。また、Free UNIXでも最新版を使用したい場合には、ソースからインストールしますけどね。

とはいえ、難しく考える必要はありません。CVSはOSの違いを吸収してくれるautoconfというツールに対応しているので、余程変わったOSでなければ、スムーズにインストールできるはずです。

■■■2.1.1 GNUツール群の準備

まず、商用UNIXを利用している方は、あらかじめ展開用・構築用のGNUツールを用意しておいた方がよいでしょう。これらのツールは、GNUプロジェクトホームページから辿れば見つけることができます。これらの最新バージョンは、手近なGNUのFTPミラーサイトからダウンロードしてください。これらのツールについては、一応この本のサポートページからもダウンロードできるようにしておきますが、各ホームページで最新版を調べて入れる方がよいです。これらのインストールについての詳細は、配布セットに付属するドキュメントを参照してください。

CVSは以前rcsおよdiffという外部コマンドに依存していましたが、1.10.8で既に依存しなくなっていた模様です。

▼GNUプロジェクトホームページ
[http://www.gnu.org/]

▼GNU FTPミラーサイトのリスト
[http://www.gnu.org/prep/ftp.html]

■■■■ 展開用ツール

GNUのソースコードは、 圧縮された形態で配られています。これを展開するためのツールを用意しましょう。

gzip
bzipという形式も普及していますが、gzipの方で話をします。
 
tar
tarは、GNU tarだと展開が少し便利になるという程度なので、OS付属のtarでも構いません。

それぞれ2002年8月の段階での最新版を【表2.1.1】に示します(もうずいぶん前から落ち着いてますが)。

【表2.1.1】 展開用ツールへのポインタ
ツール名 バージョン ホームページ
gzip 1.2.4a [http://www.gzip.org/]
tar 1.13 [http://www.gnu.org/software/tar/]

■■■■ 構築用ツール

GNU C Compiler(以下GCC、コマンド名gccとします)
コンパイラはgccでなくとも問題ないとは思いますが、結果は確実ではありません。
 
GNU make
OS付属のmakeだと、解釈できない文法もあります。GNU makeもインストールしておきましょう。
 
GNU patch
Solarisのpatchコマンドでは、knjwrp patchが通りませんでした。GNU patchを利用した方がよいでしょう。
 
GNU texinfo
texinfoはインストールの時に必要になります。マニュアルを必要とせず、インストールを強制的にスキップさせることのできる人はインストールの必要はありません。

それぞれ、2002年8月の段階での最新版を【表2.1.1】に示します。GCC 3.xに移行していますが、一般にGCC 2.95やGCC 2.96もまだまだ使用されているようです。詳しくは、GCCのホームページを見てください。

▼GCCホームページ
[http://www.gnu.org/software/gcc/gcc.html]

【表2.1.2】 構築用ツールの配布元
ツール名 バージョン ホームページ
GCC (安定バージョン) 3.0.4 [http://www.gnu.org/software/gcc/gcc.html]
GCC (開発者バージョン) 3.1 [http://www.gnu.org/software/gcc/gcc.html]
GNU Make 3.79 [http://www.fsf.org/software/make/make.html]
texinfo 4.0 [http://www.fsf.org/software/texinfo/texinfo.html]

■■■■ インストール環境

筆者が実際にインストールしてみた環境を以下に示します。

Solaris 5.7/egcs-2.91.66/GNU make-3.77/GNU patch-2.5.4

Red Hat Linux 7.2/GCC-2.96/GNU make-3.79.1/GNU patch-2.5.4

Red Hat Linux 7.3/GCC-2.96/GNU make-3.79.1/GNU patch-2.5.4

作業の前に、これらのコマンドがある場所をパスの先頭にしておく必要があり ます。例えば、これらのツールが/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の場合の注意事項:

OS付属のpatchコマンドではknjwrp patchをあてることができません。 knjwrp patchをあてる必要がある場合には、GNU patchを使用してください。ただし、本書ではすでにあたったものを使用しますので、今回は基本的に関係ありません。1.10.8のインストールに関してはサポートページに置いてある本書前版の下書きを参照してください。

▼patch(最新バージョン2.5.4)配布元
[http://www.fsf.org/software/patch/patch.html]

▼本書前版下書き
[http://www.mikamama.com/CVSBook/draft/]

make、ar、ldといった構築のためのコマンドは、/usr/css/binに配置されています。これらのコマンドにもGNUに対応するものがあります。GNUのものを使わない場合には、/usr/css/binもパスに入れておかなければなりません。なお、GNUのar、ldを使用する場合には、configureでオプションを指定する必要があります。GNUよりシステム付属ツールを優先したい場合には、/usr/css/binを先に書いておく必要があります。

■■■2.1.2 漢字コード変換をどうするか考える

Windows上のクライアントプログラム(特にWinCvs)とUNIXでやりとりする場合に、ログメッセージやファイルに含まれる日本語コード(Shift-JISとEUC)を自動的に変換するようにする必要があります。現在、UNIXサーバ側で対処する方法とWindowsクライアント側から対処する方法の2つが提案されています。

これらの方法については、CVS MLで意見交換、配布アナウンスが行われています。CVS MLは日本のCVSユーザのメーリングリストで、京都工芸繊維大学の西本 卓也さんによって運営されています。この件に限らず、CVSの使い方に関して活発に情報交換がおこなわれています。詳しくは、西本さんのページ、「バージョン管理システムCVSを使う」をごらんください。

▼バージョン管理システムCVSを使う
[http://www-vox.dj.kit.ac.jp/nishi/cvs/cvs.html] ▼CVS-ML Mail Index [http://www-vox.dj.kit.ac.jp/nishi/cvs/ml-log/maillist.html]

また、CVS-ML Mail Indexでは、過去のログも見ることができますので、CVSを使用していて困ったときにはあたられるとよいかと思います。

Windowsマシンをクライアントにせず、UNIXのみで作業をおこなう場合はEUCしか出てきませんから、漢字コード変換について考える必要はありません。

■■■■@ UNIXサーバ側で対処する方法

リポジトリへのファイルの出入り時にフィルタをかける方法で、漢字コード変換を行う機能を組み込みます。ログの変換も行います。この方法は、従来CVS knjwrp patchという名前で知られていて、富士写真フイルムの河田 幸博さん、そふと庵の加藤 裕史(cvs-1.10.8用)さん、それからCVS-MLの協力者によってパッチという形態で開発されていましたが、2002年8月時点では1.11.1p1がパッチが組み込まれた形でびんぢさん(CVS Japan)の元で配布されてます(cvs-jp-1.11.1p1-3.tar.gz)。

▼CVS Japan URL (cvs-1.11.1p1)
[http://www.aqut.homeip.net/cvsjp/]

▼WinCVS / cvs knjwrp ダウンロードなページ (cvs-1.10.8)
[http://www.linkclub.or.jp/~tumibito/soft-an/cvs/download.html]

■■■■A Windowsクライアント側で対処する方法

一方、Windowsクライアント(特にWinCvs)側の作業ファイルは全てSJIS、UNIX側のリポジトリ内のファイルはEUCとして、クライアントが自動的に漢字コードを変換する方法があります。これは、加倉さんという方が最近取り組んでおられ、パッチおよびバイナリが以下のサイトで配布されています。

▼CVS の euc / sjis 相互変換
[http://hp.vector.co.jp/authors/VA005227/cvs-euc-sjis/]

■■■2.1.3 CVSのインストール

バージョン1.11.1p1の漢字コード変換版(cvs-jp-1.11.1p1-3.tar.gz)を使って説明をします。最新バージョンの1.11.2のインストール方法は、configureの前にひとつ手順が増えている以外は同じです。以下にソースコードの取得先を書いておきます。

【表2.1.3】 本書で対象とするバージョンの配布元

  配布元URL サポートページミラー
cvs-jp-1.11.1p1-3.tar.gz [http://www.aqut.homeip.net/cvsjp/] [cvs-jp-1.11.1p1-3.tar.gz]
cvs-1.11.2.tar.gz [http://www.cvshome.org/] [cvs-1.11.2,tar.gz]

■■■■@ 展開する

アーカイブを展開する方法にはいくつかあります。zcatもしくはgzipに-cと-dオプションで標準出力に出すか、gunzipもしくはgzipに-dオプションで圧縮を解凍するかしたあとで、tarで展開します。あるいはGNU tarならば、-zオプションを使用すると、gzipを内部で呼び出します。今回はzcatを使ってみましょう【図2.1.1】。zcatが標準出力に出しているデータをtarが受け取るように、-fオプションに標準入力を表す「-」を指定しています。tarのオプション-xは展開を指定するためのものです。

【図2.1.1】展開しよう
▼
% zcat cvs-jp-1.11.1-3.tar.gz | tar xf -
% ls -F
cvs-1.11.1p1/      cvs-jp-1.11.1p1-3.tar.gz
▲

このとき、「.Zがついてない」というようなエラーが出たら、それはgzipパッケージのzcatではないということです。環境変数PATHの設定を確認してください(/usr/binが先に書かれてませんか?)。ls -Fコマンドを打ってcvs-1.11.1p1ディレクトリができていることを確認してください。

展開がすんだら、おもむろにREADME, INSTALLというファイルを読むのがお作法です。cvs-jp-1.11.1p1にはREADME.jp, INSTALL.jpも合わせて読む必要があります。

■■■■A configureを実行する

次はconfigureです。GNUソフトウェアはautoconfという仕組みでOSによるソースコード内の違いを切り替えますが、トップディレクトリに置かれているconfigureというスクリプトがその切替を実際におこなうスクリプトです。configureを実行するとMakefileとconfig.hなどのファイルを生成します。

cvs-1.11.2の場合、使用しているautoconfがバージョンアップしたため、従来と比べてconfigureの前に手順が増えています。noautoconfスクリプトを実行する必要があります【図2.1.2】。実行時のメッセージは特にありません。おまじないと思って実行しておいてください。

【図2.1.2】1.11.2の場合
▼
% ./noautomake.sh
▲

cvs-jp-1.11.1p1-3の場合、標準に比べて次のようなオプションが増えています。

--disable-kanji	→漢字を使わない
--enable-sjis	→クライアントにSJISを出力する

これらは「Win32 上で Cygwin で cvs.exe(Win32 client) を作成する場合」のオプションで、今回の目的にはあまり関係ないので詳細は省きます。追加オプションの使い方については、INSTALLファイル、README.jp、INSTALL.jpを見てください。

configureで最も重要なオプションは、「どこにインストールするか」を指定する--prefixです。どこにインストールするかを決めたら、指定しておいてください。システムのコマンド以外は通常/usr/localに置くようになっており、ほとんどのOSで標準設定がそうなるようになっています。しかし、Red Hat Linux 7.xの場合は/usrの下にインストールされる設定になっているので、OS附属のcvsを上書きするのでなければ、/usr/localを指定するのが無難でしょう。このあたりは、自分の事情を良く考えて決めてください。

【図2.1.3】インストール先を/usr/localとしてconfigureを実行してみる
▼
% ./configure --prefix=/usr/local
creating cache ./config.cache
checking for a BSD compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for gawk... gawk
checking whether make sets ${MAKE}... yes
checking for gcc... gcc
(中略)
updating cache ./config.cache
creating ./config.status
creating Makefile
(中略)
creating zlib/Makefile
creating config.h
creating src/options.h
▲

configureを実行すると、わきゃわきゃconfigureがチェックしてるよ〜んというメッセージを出してくれます。細かく見てみると面白いところもあるのですが、ここではめんどくさいので省略します。最後、各ディレクトリのMakefileやconfig.h、src/options.hといった構築に必要なファイル群を生成して終わります。それを確認して、次に行きましょう。

■■■■B 構築する

次は構築、つまり、makeを実行します【図2.1.4】。 makeコマンドはMakefileという構築のための依存関係のルールやコマンドが記述されたファイルを読み込んで、そのルールに従って、ソフトウェアを組み上げます。

【図2.1.4】やっと構築だ
▼
% make >& m.log&
% tail -f m.log
checking dependency style of gcc... (cached) gcc3
checking whether gcc and cc understand -c and -o together... (cached) yes
checking how to run the C preprocessor... (cached) gcc -E
checking for AIX... no
checking for minix/config.h... (cached) no
checking for strerror in -lcposix... (cached) no
checking for ranlib... (cached) ranlib
(以下延々と続く)
▲

ここではちょっとログをファイル(m.log)にリダイレクト(>&)してとってみました【図2.1.4 1行目】。構築時間が長いため、ログをとっておかないと不便なためです。例えば、途中で止まってしまったときなどにログがないと、原因を探すために、もう一度やりなおさなければなりません。

ログの保存中、様子が見えないと嫌なので、tailというコマンドの-fオプションで、m.logの様子を出力させます【図2.1.4 2行目】。試してみてください。はじめて実行したときは「おおっ」と思いますよ(難点はmakeの実行が終ったときがわかりにくいことですけど)。makeが終了して止まったままになったら、Ctrl-Cでtailコマンドを終了してください。make中のログは、m.logに保存されていますので、いつでも見ることができます。

【図2.1.5】m.logの中身 
▼
cd . && /bin/sh /home/mika/src/cvssrc/cvs-1.11.2/missing --run autoconf
/bin/sh ./config.status --recheck
running /bin/sh ./configure  --prefix=/usr/local --no-create --no-recursion
loading cache ./config.cache
(中略)
make[2]: Leaving directory `/home/mika/src/cvssrc/cvs-1.11.2/vms'
make[2]: Entering directory `/home/mika/src/cvssrc/cvs-1.11.2'
make[2]: Leaving directory `/home/mika/src/cvssrc/cvs-1.11.2'
make[1]: Leaving directory `/home/mika/src/cvssrc/cvs-1.11.2'
▲

■■■■C インストールする

makeが無事終了したら、root権限でインストールします【図2.1.6】。

【図2.1.6】インストール
▼
% su
Password: 
# PATH=/usr/local/bin:/usr/bin:/usr/sbin;export PATH
# make install
Making install in intl
(中略)
make[1]: Leaving directory `/home/work/gnu/texinfo-4.0'
▲

インストールに必要なツールが含まれるように、shで環境変数PATHを設定しておきます【図2.1.6 3行目】。個人の設定ファイルを読み込んでも良いですが、こっちの方がちょっとクールな感じ。ま、好きずきですけどね。make installでインストールがうまく終了すれば【図2.1.6 4行目】、最終行は【図2.1.6 7行目】のようになるはずです。texinfoがインストールされていないと途中で止まるので、うまく処理をスキップできない人はインストールしておいてくださいね。

■■■■D 確認する

では、最後にちゃんとcvsコマンドがインストールされたか確認してみましょう。lsでチェックしてもいいですが、ここではPATHに含まれているかどうかをwhichコマンドを使ってチェックしてみます【図2.1.7】。ありましたか?

【図2.1.7】入ってる入ってる
▼
% which cvs
/usr/local/bin/cvs
▲