CVSup 経由でソースを取ってくる

Postgres のソースツリーを取ってくるた めの匿名 CVS に代わる方法として CVSup があります。CVSup は、 FreeBSD プロジェクト において、CVS リポジトリやその他のファイルツリーを配布するために、 John Polstra によっ て開発されました。

CVSup を使う主なメリットは、あなたの ローカルシステム上で CVS リポジトリ 全体 の 複製を作成してくれるので、ログdiff といった cvs 操作がローカルで高速に行えるようになると いうことです。

CVSup クライアントシステムの 準備

CVSup を動かすには2つのディレクトリ 領域が必要です。つまりローカルの CVS リポジトリ(もしくは、リポジトリではなくスナップショットを取得す るなら単なるディレクトリ領域。後述)とローカルの CVSup 作業エリアです。これらは同一のディレクトリツ リー内で共存させることも可能です。

CVS リポジトリのローカルコピーをどこ に置くか決めます。私達のシステムのうちの1つでは、最近 /home/cvs/ というところにリポジトリを設定しましたが、 以前は /opt/postgres/cvs/ にある Postgres の開発ツリーの配下に置いてい ました。リポジトリを /home/cvs/ に置いてお くには、.cshrc ファイルに

setenv CVSROOT /home/cvs
    
と書いておくか、同じようなことを、あなたが使っているシェルに応じ て .bashrc とか .profile とかいうファイルに書いておきます。

cvs のリポジトリ領域は、初期化してや る必要があります。いったん環境変数 CVSROOT がセッ トされると、単純に以下のコマンドで初期化できます:

$ cvs init
    
この後、環境変数 CVSROOT が指しているディレクトリ のリストを取ってみると、少なくとも CVSROOT という名前のディレクトリがあるはずです。
$ ls $CVSROOT
CVSROOT/
    

CVSup クライアントを動かす

まず cvsup がパスに含まれているかどう かを確認します。ほとんどのシステムではこのようにタイプします:

which cvsup
    
その後、単にcvsup を起動します:
$ cvsup -L 2 postgres.cvsup
    
-L 2 でいくつかのステータスメッセージが有効にな り、更新中の様子を見ることができます。また postgres.cvsup は、 実際にはあなたが CVSup の設定ファイル につけたパス名を指定します。

特定のシステム用に調整されたCVSup の設定ファイルを以下に示します。これは、ローカル全体の CVS リポジトリを保守するためのものです。

# このファイルは PostgreSQL ORDBMS プロジェクトのために用意された、
# 標準の CVSup のディストリビューションファイルです。
# Modified by lockhart@alumni.caltech.edu 1997-08-28
# - Point to my local snapshot source tree
# - Pull the full CVS repository, not just the latest snapshot
#
# 集合物すべてに適用されるデフォルト値
*default host=postgresql.org
*default compress
*default release=cvs
*default delete use-rel-suffix
# 次の行を有効にすると、最新のスナップショットを取得します
#*default tag=.
# 次の行を有効にすると、指定された日付において、上記または
# デフォルトで指定されたものを取得します
# ☆ちと意味不明
# enable the following line to get whatever was specified above 
# or by default at the date specified below
#*default date=97.08.29.00.00.00

# CVSup がその「ブックマーク」ファイルを格納する位置を示すポイン
# タのベースディレクトリ。サブディレクトリ sup/ が作られます。
#*default base=/opt/postgres # /usr/local/pgsql
*default base=/home/cvs

# CVSup が実際の配布物を格納するための場所の前につける
# ディレクトリ名。
*default prefix=/home/cvs

# 以下のすべてを含む、配布物全体
pgsql

# 「配布物全体」に対する、個々の配布物
# pgsql-doc
# pgsql-perl5
# pgsql-src

   

Postgres の ftp サイト から最新のスナップショットだけを 取り出すための CVSup 設定ファイルを 以下に示します:

# このファイルは、PostgreSQL ORDBMS プロジェクトに関する標準の
# CVSup 配布ファイルに相当します。
# 収集するものすべてに適用されるデフォルト
*default host=postgresql.org
*default compress
*default release=cvs
*default delete use-rel-suffix
*default tag=.

# CVSup がその「ブックマーク」ファイルを格納するための場所の
# ベースとなるディレクトリ
*default base=/usr/local/pgsql

# CVSup が実際の配布物を格納するための場所の前につけられる
# ディレクトリ名
*default prefix=/usr/local/pgsql

# 以下のすべてを含む、配布物全体
pgsql

# 「配布物全体」に対する、個々の配布物
# pgsql-doc
# pgsql-perl5
# pgsql-src

    

CVSup をインストールする

CVSup はソース、コンパイル済みバイナ リ、および Linux RPM として入手可能です。バイナリを使うほうがソ ースからコンパイルするよりもはるかに簡単です。これはコンパイル時 に、非常に高機能な、しかし雑多なバージョンが散在する Modula-3 コンパイラが必要となるからです。

CVSup をバイナリからインストールする

お使いのプラットフォーム用のバイナリが Postgres の ftp サイト に置いてある場合や、 CVSupが ports として用意されている FreeBSD をお使いの場合は、事前にコンパイルされたバイナリを使用 することができます。

Note: CVSup はもともと FreeBSD のソースツリーを配布するためのツールとして開発さ れたもので、FreeBSD をお使いの方であれば "port" という形で入手で きます。もし、ここで述べている内容だけでは入手やインストールする のに情報が不充分と思われる方は、ここで改善案をご提示いただけると 助かります。

この記事の執筆時点で入手可能なバイナリが用意されているプラットフ ォームには、Alpha/Tru64, ix86/xBSD, HPPA/HPUX-10.20, MIPS/irix, ix86/linux-libc5, ix86/linux-glibc, Sparc/Solaris, Sparc/SunOS があります。

  1. あなたのプラットフォームに合った cvsupcvsupd は(サーバですので)クライア ントになる場合は不要です)バイナリの tar ファイルを入手してください。

    1. FreeBSD をお使いの場合は CVSup port をインストールしてください。

    2. FreeBSD 以外のプラットフォームをお使いの場合は、 Postgres の ftp サイト から適切なバイナリをダウン ロードしてください。

  2. tar ファイルをチェックして、その内容とディレクトリ構造(もしあれ ば)を確認してください。少なくとも Linux 用の tar ファイルには、 スタティック(にリンクされた)バイナリと man ページが、ディレク トリ分けすることなく入っています。

    1. バイナリが tar ファイルのトップディレクトリに入っていれば、単に それをあなたのインストール先ディレクトリに展開してやるだけですみ ます。

      $ cd /usr/local/bin
      $ tar zxvf /usr/local/src/cvsup-16.0-linux-i386.tar.gz
      $ mv cvsup.1 ../doc/man/man1/
          

    2. tar ファイルの中身がディレクトリ構造になっている場合は、/usr/local/src 配下で展開して、その後バイナリを適切な場所に移動してください。

  3. 新しいバイナリが、あなたのパスに反映されていることを確認して おきます。

    $ rehash
    $ which cvsup
    $ set path=(path to cvsup $path)
    $ which cvsup
    /usr/local/bin/cvsup
          

ソースからのインストール

CVSup をソースからインストールするこ とは、そんなに簡単なことではありません。この主な理由は、ほとんど のシステムではまず Modula-3 コンパイラをインストールする必要があ るからです。このコンパイラはLinux RPM, FreeBSD package およびソースコードとして提供されています。

Note: Modula-3 をまっさらのソースからインストールするには 200MB 程度の ディスク領域を必要とします。(インストール後に)ソースを削除して しまえば 50MB ほど節約できます。

Linux でのインストール

  1. Modula-3 をインストールします。

    1. Polytechnique Montreal, から Modula-3 の配布物を取ってきます。 ここは精力的にコードベースを保守しているところですが、オリジナル はthe DEC Systems Research Center で開発されました。 "PM3" RPM は圧縮後で約 30MB あります。執筆時点では 1.1.10-1 リリースが RH-5.2 上でまと もにインストールされています。1.1.11-1 は明らかに別のリリース (RH-6.0?) でビルドされているようで、RH-5.2 では動きません。

      Tip: この特定の rpm パッケージには たくさんの RPM ファイルがあるので、別々のディレ クトリに入れたくなることでしょう。

    2. Modula-3 rpm をインストールします:

      # rpm -Uvh pm3*.rpm
          

  2. cvsup の配布物を展開します:

    # cd /usr/local/src
    # tar zxf cvsup-16.0.tar.gz
          

  3. cvsup の配布物をビルドします。X11 のライブラリを要求させないよう にするため、GUI インターフェース機能を使わないように指示します:

    # make M3FLAGS="-DNOGUI"
          
    また、Modula-3 がインストールされていないシステムに入れるために スタティックバイナリでビルドしたければ、以下のようにします:
    # make M3FLAGS="-DNOGUI -DSTATIC"
          

  4. ビルドされたバイナリをインストールします:

    # make M3FLAGS="-DNOGUI -DSTATIC" install