[目次へ][第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のインストール
さて、ディープな人はやはりソースからインストールしたいんじゃないかと思います。ちなみに、SolarisやIRISなど、商用UNIXのユーザはだいたいここからはじめるしかなかったりします。また、Free UNIXでも最新版を使用したい場合には、ソースからインストールしますけどね。
とはいえ、難しく考える必要はありません。CVSはOSの違いを吸収してくれるautoconfというツールに対応しているので、余程変わったOSでなければ、スムーズにインストールできるはずです。
まず、商用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を先に書いておく必要があります。
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/]
バージョン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 ▲