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 Montrl 獲取 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論壇】
|