F.3. 通過 CVSup獲取源代碼

使用匿名 CVS 檢索 PostgreSQL 源碼樹的另一個方法是 CVSupCVSup 是由 John Polstra 開發的,用于為 FreeBSD 項目 分發CVS 倉庫和其他文件樹。

使用 CVSup 的主要優點是它可以可靠地在你的本地機器上復制 整個 CVS 倉庫,允許快速的本地使用cvs 操作, 象logdiff。 其他優點包括與 PostgreSQL 服務器的快速同步,因為它使用一種高效的流傳輸協議, 該協議只傳輸最後更新(以來)的修改。

F.3.1. 準備一個 CVSup 客戶端系統

做這件事需要為 CVSup 準備兩個目錄區域:一個本地 CVS 倉庫(或者就是一個目錄區域 ─ 如果你只是抓取一個快照而不是整個倉庫; 見下文) 和一個本地 CVSup 簿記區域。 這些東西可以在同一個目錄樹裡面共存。

確定你將在哪個目錄裡面安放你的 CVS 倉庫的本地拷貝。在我們的一個系統中, 我們最近在 /home/cvs/ 設立了倉庫, 但是以前我們把它放在 /opt/postgres/cvs/ 裡的一個 PostgreSQL 開發版的目錄樹裡。 如果你想把你的倉庫放在 /home/cvs/,那麼把

setenv CVSROOT /home/cvs
    

放到你的 .cshrc 文件, 或者根據你用的 shell 把類似的行放到你的 .bashrc.profile 文件裡。

cvs 倉庫區域必須被初始化。一旦設置了 CVSROOT,那麼初始化可以簡單地用下面的命令完成:

$ cvs init
    

之後,你列舉 CVSROOT 目錄時,你至少能看到一個名為 CVSROOT 的目錄。

$ ls $CVSROOT
CVSROOT/
    

F.3.2. 運行CVSup客戶端

先證實 cvsup 在你的路徑裡; 在大多數系統上你可以鍵入下面命令核實這些

which cvsup
    

然後,只需要用下面命令運行 cvsup

$ cvsup -L 2 postgres.cvsup
    

這裡的 -L 2 打開了一些狀態消息, 這樣你就可以監控更新的進展過程,而 postgres.cvsup 是你賦予你的 CVSup 配置文件的路徑和名稱。

這裡是一份為特定安裝修改過的CVSup 配置文件,它維護著一個完整的本地 CVS 倉庫:

# This file represents the standard CVSup distribution file
# for thePostgreSQLORDBMS project
# Modified by lockhart@fourpalms.org 1997-08-28
# - Point to my local snapshot source tree
# - Pull the full CVS repository, not just the latest snapshot
#
# Defaults that apply to all the collections
*default host=cvsup.postgresql.org
*default compress
*default release=cvs
*default delete use-rel-suffix
# enable the following line to get the latest snapshot
#*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

# base directory where CVSup will store its 'bookmarks' file(s)
# will create subdirectory sup/
#*default base=/opt/postgres # /usr/local/pgsql
*default base=/home/cvs

# prefix directory where CVSup will store the actual distribution(s)
*default prefix=/home/cvs

# complete distribution, including all below
pgsql

# individual distributions vs 'the whole thing'
# pgsql-doc
# pgsql-perl5
# pgsql-src

   

下面的是 PostgreSQLftp 站點 建議的 CVSup 配置文件, 它將只是抓取目前(版本)的快照:

# This file represents the standard CVSup distribution file
# for thePostgreSQLORDBMS project
#
# Defaults that apply to all the collections
*default host=cvsup.postgresql.org
*default compress
*default release=cvs
*default delete use-rel-suffix
*default tag=.

# base directory where CVSup will store its 'bookmarks' file(s)
*default base=/usr/local/pgsql

# prefix directory where CVSup will store the actual distribution(s)
*default prefix=/usr/local/pgsql

# complete distribution, including all below
pgsql

# individual distributions vs 'the whole thing'
# pgsql-doc
# pgsql-perl5
# pgsql-src

    

F.3.3. 安裝 CVSup

CVSup 可以以源代碼的形式、制作好了的二進制形式、或者 Linux RPM 的形式獲得。 使用二進制的形式要遠比從源代碼裡面制作要容易得多, 主要是因為編譯需要高效但是龐大的 Modula-3 編譯器。

從二進制包安裝CVSup

如果你擁有一個在 PostgreSQL ftp 站點 裡貼出來的平台,或者你正在運行 FreeBSD, 你就可以使用制作好了的二進制形式,這時候 CVSup 是以一個已移植好了的形式獲得的。

注意: CVSup 最初是作為一個用于分發 FreeBSD 源碼樹的工具開發的。 對于那些運行 FreeBSD 的人來說,它可以當作 "port"(移植)獲取, 如果這些描述不足以說明如何獲取和安裝它的問題, 那麼請為我們在這裡貢獻一個過程。

在寫作這些的時候,可以獲得下面平台的二進制 Alpha/Tru64,ix86/xBSD, HPPA/HP-UX10.20,MIPS/irix, ix86/linux-libc5,ix86/linux-glibc, Sparc/Solaris,and Sparc/SunOS。

  1. 檢索適合你的平台的 cvsup (做客戶端不需要cvsupd) 二進制文件。

    1. 如果你用 FreeBSD,安裝CVSup 移植。

    2. 如果你使用其他平台,在 PostgreSQL ftp 站點 找出並下載適合你的二進制文件。

  2. 如果需要,檢查tar 文件以核實內容和目錄結構。 至少對于 linux 的 tar 文件而言, 靜態二進制和 手冊頁是不包括任何目錄包信息的。

    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 文件裡面有一個目錄結構, 那麼把 tar 文件解包到 /usr/local/src 裡, 然後把二進制移動到上面對應的合適路徑裡。

  3. 確保新的二進制在你的路徑裡。

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

F.3.4. 從源代碼安裝

從源代碼安裝 CVSup 並非易如反掌, 主要是因為大多數系統將需要先安裝一個 Modula-3 編譯器。 這個編譯器可以以Linux RPM, FreeBSD 的包或者源代碼的形式獲得。

注意: 一個 Modula-3 的淨代碼安裝大約需要 200MB 磁盤空間, 當把源代碼刪除後大約只有 50MB。

Linux 安裝

  1. 安裝 Modula-3.

    1. Polytechnique Montral 獲取 Modula-3 發布,他們還在積極地維護著基于 DEC 系統研究中心 的代碼。 PM3 RPM 版本壓縮後大約 30MB。 在我們寫作的時候,1.1.10-1 版在 RH-5.2 上幹淨利落的安裝好了, 而1.1.11-1 版本顯然是為另外一個版本(RH-6.0?)制作的, 無法在 RH-5.2 上運行。

      提示: 這些 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 的發布版,禁止 GUI 界面以避免要求 X11 庫:

    # make M3FLAGS="-DNOGUI"
          

    如果你想制作一個靜態的二進制以便于裝到一個沒有安裝 Modula-3 的系統,用:

    # make M3FLAGS="-DNOGUI -DSTATIC"
          

  4. 安裝制作好了的二進制:

    # make M3FLAGS="-DNOGUI -DSTATIC" install