使用匿名 CVS 检索 PostgreSQL 源码树的另一个方法是 CVSup。 CVSup 是由 John Polstra 开发的,用于为 FreeBSD 项目 分发CVS 仓库和其他文件树。
使用 CVSup 的主要优点是它可以可靠地在你的本地机器上复制 整个 CVS 仓库,允许快速的本地使用cvs 操作, 象log 和 diff。 其他优点包括与 PostgreSQL 服务器的快速同步,因为它使用一种高效的流传输协议, 该协议只传输最后更新(以来)的修改。
做这件事需要为 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/
先证实 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 [email protected] 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
在上面的步骤里,如果你声明 repository,而不是pgsql, 那么你就会得到 cvsup.postgresql.org 上面的一个完整的仓库拷贝, 包括其 CVSROOT 目录。如果这么做,你可能会希望排除那些目录中的某些文件, 以便你做本地的修改,方法是使用一个 refuse 文件。比如,对于上面的设置,你可以在 /home/cvs/sup/repository/refuse 里面放下面这些行:
CVSROOT/config* CVSROOT/commitinfo* CVSROOT/loginfo*
参考 CVSup 的手册页获取如何使用拒绝(refuse)文件的信息。
下面的是 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
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。
检索适合你的平台的 cvsup (做客户端不需要cvsupd) 二进制文件。
如果你用 FreeBSD,安装CVSup 移植。
如果你使用其他平台,在 PostgreSQL ftp 站点 找出并下载适合你的二进制文件。
如果需要,检查tar 文件以核实内容和目录结构。 至少对于 linux 的 tar 文件而言, 静态二进制和 手册页是不包括任何目录包信息的。
如果二进制在 tar 文件的顶层,那么只需要把他们解包到你的目标目录里面:
$ cd /usr/local/bin $ tar zxvf /usr/local/src/cvsup-16.0-linux-i386.tar.gz $ mv cvsup.1 ../doc/man/man1/
如果 tar 文件里面有一个目录结构, 那么把 tar 文件解包到 /usr/local/src 里, 然后把二进制移动到上面对应的合适路径里。
确保新的二进制在你的路径里。
$ rehash $ which cvsup $ set path=(path to cvsup $path) $ which cvsup /usr/local/bin/cvsup
从源代码安装 CVSup 并非易如反掌, 主要是因为大多数系统将需要先安装一个 Modula-3 编译器。 这个编译器可以以Linux RPM, FreeBSD 的包或者源代码的形式获得。
注意: 一个 Modula-3 的净代码安装大约需要 200MB 磁盘空间, 当把源代码删除后大约只有 50MB。
Linux 安装
安装 Modula-3.
从 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 文件, 因此你可能会愿意把它们放在独立的一个目录里。
安装 Modula-3 rpm:
# rpm -Uvh pm3*.rpm
解包 cvsup 版本:
# cd /usr/local/src # tar zxf cvsup-16.0.tar.gz
制作 cvsup 的发布版,禁止 GUI 界面以避免要求 X11 库:
# make M3FLAGS="-DNOGUI"
如果你想制作一个静态的二进制以便于装到一个没有安装 Modula-3 的系统,用:
# make M3FLAGS="-DNOGUI -DSTATIC"
安装制作好了的二进制:
# make M3FLAGS="-DNOGUI -DSTATIC" install