[ 永远的UNIX::UNIX技术资料的宝库 ]

首页 > 数据库 > 其它 > 正文
PostgreSQL7.0手册-附录-日期/时间支持-CVS 仓库
编译:何伟平 laser@zhengmai.com.cn (2001-04-21 23:48:48)
VII. 附录
附加的相关信息。 
  
内容 
UG1. 日期/时间支持 
DG1. CVS 仓库 
DG2. 文档 
参考书目 
参考书目
经我们挑选的关于 SQL 和 Postgres 的参考和读物。 
一些来自最初 Postgres  开发队伍的白皮书和技术报告可以在下面联接获取 加州大学伯克利分校计算机科学系网站 

SQL 参考书
The Practical SQL Handbook , Bowman et al, 1996 , Using Structured Query Language , 3, Judith Bowman, Sandra Emerson, and Marcy Darnovsky, 0-201-44787-8, 1996, Addison-Wesley, 1996.

A Guide to the SQL Standard , Date and Darwen, 1997 , A user's guide to the standard database language SQL , 4, C. J. Date and Hugh Darwen, 0-201-96426-0, 1997, Addison-Wesley, 1997.

An Introduction to Database Systems , Date, 1994 , 6, C. J. Date, 1, 1994, Addison-Wesley, 1994.

Understanding the New SQL , Melton and Simon, 1993 , A complete guide, Jim Melton and Alan R. Simon, 1-55860-245-3, 1993, Morgan Kaufmann, 1993. 

Abstract 
Accessible reference for SQL features.

Principles of Database and Knowledge : Base Systems , Ullman, 1988 , Jeffrey D. Ullman, 1, Computer Science Press , 1988 .

PostgreSQL-相关文档
The PostgreSQL Administrator's Guide , The Administrator's Guide , Edited by Thomas Lockhart, 2000-05-01, The PostgreSQL Global Development Group.

The PostgreSQL Developer's Guide , The Developer's Guide , Edited by Thomas Lockhart, 2000-05-01, The PostgreSQL Global Development Group.

The PostgreSQL Programmer's Guide , The Programmer's Guide , Edited by Thomas Lockhart, 2000-05-01, The PostgreSQL Global Development Group.

The PostgreSQL Tutorial Introduction , The Tutorial , Edited by Thomas Lockhart, 2000-05-01, The PostgreSQL Global Development Group.

The PostgreSQL User's Guide , The User's Guide , Edited by Thomas Lockhart, 2000-05-01, The PostgreSQL Global Development Group.

Enhancement of the ANSI SQL Implementation of PostgreSQL , Simkovics, 1998 , Stefan Simkovics, O.Univ.Prof.Dr.. Georg Gottlob, November 29, 1998, Department of Information Systems, Vienna University of Technology . 

Discusses SQL history and syntax, and describes the addition of INTERSECT and EXCEPT constructs into Postgres. Prepared as a Master's Thesis with the support of O.Univ.Prof.Dr. Georg Gottlob and Univ.Ass. Mag. Katrin Seyr at Vienna University of Technology.
The Postgres95 User Manual , Yu and Chen, 1995 , A. Yu and J. Chen, The POSTGRES Group , Sept. 5, 1995, University of California, Berkeley CA.

学报和文献
Partial indexing in POSTGRES: research project , Olson, 1993 , Nels Olson, 1993, UCB Engin T7.49.1993 O676, University of California, Berkeley CA.

A Unified Framework for Version Modeling Using Production Rules in a Database System , Ong and Goh, 1990 , L. Ong and J. Goh, April, 1990, ERL Technical Memorandum M90/33, University of California, Berkeley CA.

The Postgres Data Model , Rowe and Stonebraker, 1987 , L. Rowe and M. Stonebraker, Sept. 1987, VLDB Conference, Brighton, England, 1987.

Generalized partial indexes , Seshardri, 1995 , P. Seshadri and A. Swami, March 1995, Eleventh International Conference on Data Engineering, 1995, Cat. No.95CH35724, IEEE Computer Society Press.

The Design of Postgres, Stonebraker and Rowe, 1986 , M. Stonebraker and L. Rowe, May 1986, Conference on Management of Data, Washington DC, ACM-SIGMOD, 1986.

The Design of the Postgres Rules System, Stonebraker, Hanson, Hong, 1987 , M. Stonebraker, E. Hanson, and C. H. Hong, Feb. 1987, Conference on Data Engineering, Los Angeles, CA, IEEE, 1987.

The Postgres Storage System , Stonebraker, 1987 , M. Stonebraker, Sept. 1987, VLDB Conference, Brighton, England, 1987.

A Commentary on the Postgres Rules System , Stonebraker et al, 1989, M. Stonebraker, M. Hearst, and S. Potamianos, Sept. 1989, Record 18(3), SIGMOD, 1989.

The case for partial indexes (DBMS) , Stonebraker, M, 1989b, M. Stonebraker, Dec. 1989, Record 18(no.4):4-11, SIGMOD, 1989.

The Implementation of Postgres, Stonebraker, Rowe, Hirohama, 1990 , M. Stonebraker, L. A. Rowe, and M. Hirohama, March 1990, Transactions on Knowledge and Data Engineering 2(1), IEEE.

On Rules, Procedures, Caching and Views in Database Systems , Stonebraker et al, ACM, 1990 , M. Stonebraker and et al, June 1990, Conference on Management of Data, ACM-SIGMOD.


--------------------------------------------------------------------------------

--------------------------------------------------------------------------------

附录 UG1. 日期/时间支持
内容 
时区 
历史 
时区
因为目前还没有标准的 *nix 系统接口可以用于访问通用的跨时区的时区信息,Postgres 必须有一个内部的小表用以时区解码。下层的 OS 只用于提供输出的时区信息。 
  
表 UG1-1. Postgres 能识别的时区 
   
 
 时区 与 UTC 的偏移量 描述 
NZDT +13:00 新西兰白昼时间(夏时制) 
IDLE +12:00 国际日期变更线,东边 
NZST +12:00 新西兰标准时间 
NZT +12:00 新西兰时间 
AESST +11:00  澳大利亚东部标准夏时制 
ACSST +10:30  中澳大利亚标准夏时制 
CADT +10:30  中澳大利亚夏时制 
SADT +10:30 南澳大利亚夏时制 
AEST +10:00  澳大利亚东部标准时间 
EAST +10:00  东澳大利亚标准时间 
GST +10:00 关岛标准时间,(USSR Zone 9?) 
LIGT +10:00 澳大利亚墨尔本 
ACST +09:30  中澳大利亚标准时间 
CAST +09:30  中澳大利亚标准时间 
SAT +9:30 南澳大利亚标准时间 
AWSST +9:00  澳大利亚西部标准夏时制 
JST +9:00 日本标准时间,(USSR Zone 8) 
KST +9:00 韩国标准时间 
WDT +9:00 西澳大利亚夏时制 
MT +8:30 毛里求斯时间(?) 
AWST +8:00  澳大利亚西部标准时间 
CCT +8:00  中国沿海时间 
WADT +8:00 西澳大利亚夏时制 
WST +8:00 西澳大利亚时间 
JT +7:30 爪哇时间(译注:这里的 Java 可不是语言) 
WAST +7:00 西澳大利亚标准时间 
IT +3:30 伊朗时间 
BT +3:00  巴格达时间 
EETDST +3:00  东欧夏时制 
CETDST +2:00  中欧夏时制 
EET +2:00  东欧,(USSR Zone 1) 
FWT +2:00 法国冬时制 
IST +2:00 以色列标准时间 
MEST +2:00 中欧夏时制 
METDST +2:00 中欧白昼时间 
SST +2:00 瑞典夏时制 
BST +1:00  英国夏时制 
CET +1:00  中欧时间 
DNT +1:00  Dansk Normal Tid(?) 
DST +1:00  Dansk Standard Time (?) 
FST +1:00  法国夏时制 
MET +1:00 中欧时间 
MEWT +1:00 中欧冬时制 
MEZ +1:00 中欧时区 
NOR +1:00 挪威标准时间 
SET +1:00 Seychelles Time(?) 
SWT +1:00 瑞典冬时制 
WETDST +1:00 西欧光照利用时间(夏时制) 
GMT 0:00 格林威治平均时间 
WET 0:00 西欧 
WAT -1:00 西非时间 
NDT -2:30 纽芬兰(新大陆)白昼时间 
ADT -03:00  大西洋白昼时间 
NFT -3:30 纽芬兰(新大陆)标准时间 
NST -3:30 纽芬兰(新大陆)标准时间 
AST -4:00  大西洋标准时间(加拿大) 
EDT -4:00  东部白昼时间 
ZP4 -4:00 GMT +4 小时 
CDT -5:00  中部白昼时间 
EST -5:00  东部标准时间 
ZP5 -5:00 GMT +5 小时 
CST -6:00  中部标准时间 
MDT -6:00 山区白昼时间(译注:Mountain Daylight Time那位知道怎么译?) 
ZP6 -6:00 GMT +6 小时 
MST -7:00 山区标准时间 
PDT -7:00 太平洋白昼时间 
PST -8:00 太平洋标准时间 
YDT -8:00 Yukon 白昼时间 
HDT -9:00 夏威仪/阿拉斯加白昼时间 
YST -9:00 Yukon 标准时间 
AHST -10:00  夏威仪-阿拉斯加标准时间 
CAT -10:00  中阿拉斯加时间 
NT -11:00 州时间(Nome Time) 
IDLW -12:00 国际日期变更线,西边 

澳大利亚时区
澳大利亚时区和它的命名变量占了 Postgres 时区表的整整四分之一。有两个命名与美国定义的通用时区有冲突 CST 和 EST。 
如果设置了编译选项 USE_AUSTRALIAN_RULES,那么 CST 和 EST 将被理解为使用澳大利亚习惯。 
  

表 UG1-2. Postgres 澳大利亚时区 
   
 
 时区 与 UTC 的偏移量 描述 
CST +10:30 澳大利亚中部标准时间 
EST +10:00 澳大利亚东部标准时间 

时间日期输入解释
时间/日期类型都使用一套通用的过程进行翻译。 
时间/日期解释 

  
把输入字串分解成不同的记号,然后这些记号分类成字符串,时间,时区或者数字。 
  
如果一个记号包含冒号(:"),那它是时间串。 
如果一个记号包含划线("-"),斜杠("/"),或点("."),则是一个日期串,可能带有文本月份。 

如果记号只有数字,那它要么是一个单一的域,要么是一个 ISO-8601 连接的日期(例如,"19990113" 是 1999年一月十三日)或者时间(如,141516 是 14:15:16)。 

如果一个记号由加号("+")或减号("-")开头,那么它要么是一个时区,要么是特殊的域。

如果记号是一个文本字串,匹配可能的字串。 
在表里面做一次对分搜索,找出记号是特殊字串(如,today),日子(如,Thursday),月(如,January),或者是无关字(如,on)。 
为数域设置数域值和位掩码。例如,为 today 设置年,月,日,以及为 now 设置额外的小时,分钟,秒钟等。 

如果没有找到,对表做一次对分搜索,查找匹配记号的时区。 

如果还没有找到,扔出去一个错误。

如果记号是一个数字或者数字数域。 
如果多于 4 位数字,而且前面没有读取任何其他的日期域,那么解释为一个 "联接的日期" (如,19990118)。8 和 6 位数被解释成年,月和日,而 7 和 5 位数分别解释成年,年日。 
如果一个记号是三位数,而且一个年份已经被解码了,那么解释成年日。 

如果长于四位数,那么解释成一个年份。 
 

如果处于欧洲日期模式,并且日期域还没有被读取,而且数值小于或等于 31,那么解释成一天。 
如果月份域还没有被读取,而且如果数值小于或等于 12,那么解释成一个月份。 

如果日期域还没有读取,而且数值小于或等于 31,那么解释成一个日期。 

如果有两位或四位或更多位数字,那么解释成一年. 

否则,抛出一个错误.

如果声明了 BC,把年份数值取负值并且数值偏移一(译注:先乘负一再加一)用于内部存储(在罗马纪年里面没有零年,所以数字年份 1BC 是公元零年)。 
如果没有声明 BC,而且如果年份域有两位数长度,那么调整年份到 4 位数。如果数据域小于 70,那么加上 2000;否则,加 1900。 

小技巧:罗马纪元 1-99AD 可以用带前导零的 4 位数进行输入(例如,0099 是 99AD)。三位数在大多数环境下也是可以接受为一个年份的,不过根据(数字的)位置,这些数字字串也可以解释成一个日子。

--------------------------------------------------------------------------------
--------------------------------------------------------------------------------

H历史
注意:由 Jos?Soares 提供。
Julian 记日法是由法国学者 Joseph Justus Scaliger (1540-1609)发明的,其名称可能是取自 Scaliger 的父亲,意大利学者 Julius Caesar Scaliger (1484-1558)。天文学家已经用 Julian 周期为自 4713 BC 一月一日以来的每一天赋予了一个唯一的数字。这就是所谓的 Julian 记日法(JD)。JD 0 指定为 4713 BC 一月一日正午 UTC 到 4713 BC 一月二日正午 UTC 的 24 小时。 
“Julian 日历” 与“Julian 记日”不同。Julian 日历是 Julius Caesar 在 45 BC 发明的。一直用到大约 1582 年,这时各国开始使用罗马历法。在 Julian 日历里面,一年是近似 365 1/4 天 = 365.25 天。这样大约每 128 天(?译注:应为年)就有一天的误差。不断积累的历法错误促使教皇 Gregory XIII 按照与弥撒议会( Council of Trent)一致的精神改革了历法。 

在罗马历法里,一年是近似 365 + 97 / 400 天 = 365.2425 天。因此对应于罗马历法,大约要 3300 年,才会积累一天的误差。 

近似的 365+97/400 是通过利用下面的规则,规定每 400 年有 97 个闰年实现的: 
   
 每个可被 4 整除的年是一个闰年。 
不过,可被 100 整除的年不是闰年。 
但是,可以被 400 整除的年还是闰年 
因此,1700,1800,1900,2100 和 2200 年都不是闰年。相比而言,旧式的 Julian 历法里面只有能被 4 整除的年是闰年。 

1582 二月,罗马教廷要求从 1582 年十月减去十天,因此1852 年十月四日后面紧跟着就是十五日。在意大利,波兰,葡萄牙和西班牙都这样处理了。其他天主教国家很快跟着这么做了,但是新教国家不愿意修改,而且希腊等东正教国家直到本世纪初才修改。这个改革在英国极其殖民地(包括现在的 USA)在 1752年执行了。这样 1752 年九月二日后面跟着 1752 年九月十四日。这是为什么 Unix 系统的 cal 生成下面的输出: 

% cal 9 1752
   September 1752
 S  M Tu  W Th  F  S
       1  2 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
注意:SQL92 声称“在日期时间字面(datetime literal)的定义上,日期时间(datetime)值的日期和时间根据罗马历法受自然规则的约束”。在 1752-09-03 和 1752-09-13 之间的日子,尽管被罗马教廷的教令取消了,但为了和“自然规则”相一致,因而是有效的日期。
在世界的不同的地方,发明了许多不同的历法,有许多比罗马历法系统还早。例如,中国历法的最早应用可以追溯到公元前14世纪。传说黄帝在 2637 BC 就发明了这个历法。中华人民共和国使用罗马历法用于民用。中国历法用于决定节日/节气。(译注:老外的治学态度比我们很多人好得多,对中国历法的认识不比我们大多数人差。:*()

--------------------------------------------------------------------------------
--------------------------------------------------------------------------------

附录 DG1. CVS 仓库
内容 
CVS 树的组织 
通过匿名 CVS获取源代码 
通过 CVSup获取源代码 
Postgres 的源代码是使用 CVS 代码管理系统进行存储和管理的。 
至少有两个方法:匿名 CVS 和 CVSup,可以用于从Postgres 服务器把 CVS 代码树拉到你的本地机器上。 

CVS 树的组织
作者:由 Marc G. Fournier 写于 1998-11-05。
命令 cvs checkout 有一个标志,-r,可以让你检查一个模块的某一修订版。这个标志,举例来说,使我们可以很容易地在未来的任何时间检索构成模块‘tc’的版本 1.0 的源代码: 
$ cvs checkout -r REL6_4 tc
这一点很有用,例如,如果某人说那个版本里面有一个臭虫,但你不能在目前的工作拷贝里面找出那个臭虫。 
小技巧:你还可以用 -D 选项检查任意一天的模块的源码。
当你给多于一个文件打上相同的标记时,你可以把标记想象成"一个在由文件名与修订版本号组成的矩阵中蜿蜒的折线"。例如我们有 5 个文件,版本是下面的东西: 
             file1   file2   file3   file4   file5
     
             1.1     1.1     1.1     1.1  /--1.1*      <-*-  TAG
             1.2*-   1.2     1.2    -1.2*-
             1.3  \- 1.3*-   1.3   / 1.3
             1.4          \  1.4  /  1.4
                           \-1.5*-   1.5
                             1.6
那么标记“TAG”将引用 file1-1.2,file2-1.3,等。 
注意:要创建一个发布的分支,还要在命令行上加一个 -b 选项,这是一样的事情。
因此,要创建 v6.4 版本,我按照下面的方式做: 
$ cd pgsql
$ cvs tag -b REL6_4
这样就会为 RELEASE 树创建标记和分支。 
现在,对那些有 CVS 访问(权限)的人,就太简单了。首先,创建两个子目录,RELEASE 和 CURRENT,这样你不会混淆这两个。然后: 

cd RELEASE
cvs checkout -P -r REL6_4 pgsql
cd ../CURRENT
cvs checkout -P pgsql
这样将产生两个目录树,RELEASE/pgsql 和 CURRENT/pgsql。从这时起,CVS 将跟踪某个位置分之在哪个目录树里面,并且允许两个树的独立更新。 
如果你只在 CURRENT 辕马树上干活,你只需要象我们开始标记修补版分支以前那样做事情就行了。 

在你做完对一个分支的初始检查后 

$ cvs checkout -r REL6_4
任何你在那个目录结构里面做的事情都局限与那个分支。如果你对那个目录结构打了个补丁,然后在该目录里面做一次: 
cvs commit
该补丁就应用到该分支并且只应用到该分支。 

--------------------------------------------------------------------------------
--------------------------------------------------------------------------------

通过匿名 CVS 获取源代码
如果你想经常地跟上目前的代码,你可以从我们的CVS 服务器上把它们抓下来,然后用 CVS 经常地检索更新。 
  
匿名 CVS 
你将需要一个本地 CVS (并行版本控制系统 Concurrent Version Control System)的拷贝,你可以从 http://www.cyclic.com/ 或者任意 GNU 软件归档站点获得。我们目前建议版本是 1.10 (在我们书写这些的时候是最新版)。许多系统缺省安装时已经带有最新的cvs。 
向 CVS 服务器做一次初始化登录: 

$ cvs -d :pserver:anoncvs@postgresql.org:/usr/local/cvsroot login
你将会被提问口令;键入'postgresql'。你将只需要这样做一次,因为口令将被保存在你的家目录的 .cvspass 里。 
抓取 Postgres 源文件: 

cvs -z3 -d :pserver:anoncvs@postgresql.org:/usr/local/cvsroot co -P pgsql
这样将把 Postgres 源文件安装到你当前目录的子目录 pgsql 里。 
注意:如果你与互联网的联接速度很快,你可能不需要-z3,这个开关告诉 CVS 对待传输数据使用 gzip 压缩。不过对于使用猫拨号上网的速度,这样做很有好处。
这样的初始化检查比简单地下载一个 tar.gz 文件要慢一些,如果你有一个 28.8K 的猫(调治解调器);这一步大约要花掉你 40 分钟左右。CVS 的先进性只有在你以后需要更新文件时才显示出来。 
当你想要更新最新的 CVS 源文件时,cd 到 pgsql 子目录,然后使用命令 

$ cvs -z3 update -d -P
这样将只抓取上次你访问以来的更新。即使在用猫上网的情况下,你也只需要几分钟就可以更新完毕。 
你可以通过在你的家目录里面的 .cvsrc 加上下面几行来节约几次敲键 

cvs -z3
update -d -P
这样对所有 cvs 命令应用 -z3 选项,以及给 cvs 更新附加 -d 和 -P 选项。然后你只需要说 
$ cvs update
就可以更新你的文件了。
注意 
有些老版本的 CVS 有一个臭虫,令你所有检查出来的文件以所有人可写的权限存储在你的目录里。如果你发现这样的事情,你可以做一些象下面的事情  
$ chmod -R go-w pgsql
    
以合适地设置权限。这个臭虫在 CVS 版本 1.9.28 就被修补了。 

CVS 还可以做很多其他事情,象抓取以前版本的 Postgres 源码而不是最新版本的源码。更多的信息,请参考CVS 随机文档,或者检查在 http://www.cyclic.com/ 的在线文档。

--------------------------------------------------------------------------------

--------------------------------------------------------------------------------

通过 CVSup 获取源代码
使用匿名 CVS 检索 Postgres 源码树的另一个方法是 CVSup。CVSup 是由 John Polstra 开发的,用于为 FreeBSD 项目 分发 CVS 仓库和其他文件树。 
使用 CVSup 的主要优点是它可以可靠地在你的本地机器上复制整个 CVS 仓库,允许快速的本地使用 cvs 操作,象  log 和 diff。其他优点包括与 Postgres 服务器的快速同步,因为它使用一种高效的流传输协议,该协议只传输最后更新(以来)的修改。 

准备一个 CVSup 客户端系统
做这件事需要为 CVSup 准备两个目录区域:一个本地 CVS 仓库(或者就是一个目录区域 — 如果你只是抓取一个快照而不是整个仓库;见下文)和一个本地CVSup 簿记区域。这些东西可以在同一个目录树里面共存。 
确定你将在哪个目录里面安放你的 CVS 仓库的本地拷贝。在我们的一个系统中,我们最近在 /home/cvs/ 设立了仓库,但是以前我们把它放在 /opt/postgres/cvs/ 里的一个 Postgres 开发版的目录树里。如果你想把你的仓库放在 /home/cvs/ 那么把 

setenv CVSROOT /home/cvs
放到你的 .cshrc 文件,或者根据你用的 shell 把类似的行放到你的 .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 仓库: 

# This file represents the standard CVSup distribution file
# for the PostgreSQL ORDBMS project
# 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
#
# Defaults that apply to all the collections
*default host=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 points to 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 points to 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


下面的是 Postgres ftp 站点 建议的 CVSup 配置文件,它将只是抓取目前(版本)的快照: 
# This file represents the standard CVSup distribution file
# for the PostgreSQL ORDBMS project
#
# Defaults that apply to all the collections
*default host=postgresql.org
*default compress
*default release=cvs
*default delete use-rel-suffix
*default tag=.

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

# prefix directory points to 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
CVSup 可以以源代码的形式、制作好了的二进制形式、或者 Linux RPM 的形式获得。使用二进制的形式要远比从源代码里面制作要容易得多,主要是因为编译需要高效但是庞大的 Modula-3 编译器。 
  
从二进制安装 CVSup 
如果你拥有一个在 Postgresftp 站点 里贴出来的平台,或者你正在运行 FreeBSD,你就可以使用制作好了的二进制形式,这时候CVSup 是以一个已移植好了的形式获得的。 

注意:CVSup 最初是作为一个用于分发 FreeBSD 源码树的工具开发的。对于那些运行 FreeBSD 的人来说,它可以当作 "port"(移植)获取,如果这些描述不足以说明如何获取和安装它的问题,那么请为我们在这里贡献一个过程。
在写作这些的时候,可以获得下面平台的二进制 Alpha/Tru64,ix86/xBSD,HPPA/HPUX-10.20,MIPS/irix,ix86/linux-libc5,ix86/linux-glibc,Sparc/Solaris 和 Sparc/SunOS。 
检索适合你的平台的 cvsup (做客户端不需要 cvsupd)二进制文件。 
  
如果你用 FreeBSD,安装 CVSup 移植。 
如果你使用其他平台,在 Postgresftp 站点上 找出并下载适合你的二进制文件。 
 

如果需要,检查 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 Montr閍l 获取 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

--------------------------------------------------------------------------------

(http://www.fanqiang.com)
    进入【UNIX论坛

相关文章
PostgreSQL7.0手册-附录-文档 (2001-04-21 23:50:44)
PostgreSQL7.0手册-附录-日期/时间支持-CVS 仓库 (2001-04-21 23:48:48)
PostgreSQL7.0手册-教程 -73. Postgres SQL 高级特性 (2001-04-21 23:45:36)
PostgreSQL7.0手册-教程 -72. 查询语言 (2001-04-21 23:44:40)
PostgreSQL7.0手册-教程 -71. 开始 (2001-04-21 23:42:54)
PostgreSQL7.0手册-教程 -70. 体系结构 (2001-04-21 23:41:58)
PostgreSQL7.0手册-教程 -69. SQL (2001-04-21 23:41:23)
PostgreSQL7.0手册-开发者手册 -68. 分页文件 (2001-04-21 23:39:22)
PostgreSQL7.0手册-开发者手册 -67. 后端接口 (2001-04-21 23:38:34)
PostgreSQL7.0手册-开发者手册 -66. gcc 缺省优化 (2001-04-21 23:37:20)

===更多相关===
 

★  樊强制作 欢迎分享  ★