Next Previous Contents

6. PostgreSQL 快速安裝指引

這節會幫你在小於五分鐘內快速安裝和啟動這資料庫。

6.1 安裝和測試

安裝、測試、確認和執行 PostgreSQL 的步驟 以 root 身份簽入


# cd /mnt/cdrom/RedHat/RPMS
# man rpm
# ls postgre*.rpm
# rpm -qpl postgre*.rpm | less (觀看檔案名單)
# rpm -qpi postgre*.rpm (觀看套件資料)
# cat /etc/passwd | grep postgres

注意︰如果你看到一個‘postgres’使用者,你可能要備份和清除 postgres 的家目錄  postgres 和刪除這名用者,或把他改名為‘postgres2’之類。安裝時需要乾乾淨淨。
:
# rpm -i postgre*.rpm (必須安裝所有套件,即客戶端、開發、資料和主套件來使 
pgaccess 正常工作)
# man chkconfig
# chkconfig --add postgresql  (用來在開機時開始 pg。)
# /etc/rc.d/init.d/postgresql start (啟動 postgresql)
# man xhost
# xhost +  (讓 pgaccess 使用顯示裝置)
# su - postgres
bash$ man createdb
bash$ createdb mydatabase
bash$ man psql
bash$ psql mydatabase
……在 psql 中可按上 / 下箭咀來編輯歷史記錄或 \s

bash$ export DISPLAY=<主機名>:0.0
bash$ man pgaccess
bash$ pgaccess mydatabase

現在你可以在 pgaccess 或 psql 高速下達各種 SQL 指令了!!
bash$ cd /usr/doc/postgresql*

在此閱讀所有 FAQ,使用者、程式設計員、管理手冊和指引。

6.2 PostgreSQL RPMs

此外,請看 http://www.ramifordistat.net/postgres"Installation Steps"

PostgreSQL RPM 由 Lamar Owen 維護,位於 lamar.owen@wgcr.orghttp://www.postgresql.org 可找到更多 PostgreSQL 的資料。

6.3 Maximum RPM

熟習 RedHat RPM 套件管理員以管理 PostgreSQL 安裝。在 http://www.RPM.org 下載‘Maximum RPM’一書,找尋檔名 maximum-rpm.ps.gz。 在 Linux 使用 gv 指令閱讀它—


# gv maximum-rpm.ps.gz

有一個 rpm2deb 可把 RPM 套件轉換為 Debian Linux 套件

6.4 例子 RPM

測試 PostgreSQL 的各種介面需要例子。從以下地方安裝 PostgreSQL 例子目錄—

6.5 測試 PyGreSQL—Python 介面

安裝 examples 套件,請參閱 例子 RPM,之後—


bash$ cd /usr/lib/pgsql/python
bash$ createdb thilo
bash$ psql thilo
thilo=> create table test (aa char(30), bb char(30) );
thilo=> \q
bash$ /usr/bin/python
>>> import _pg
>>> db = _pg.connect('thilo', 'localhost')
>>> db.query("INSERT INTO test VALUES ('ping', 'pong')")
>>> db.query("SELECT * FROM test")
eins|zwei
----+----
ping|pong
(1 row)
>>>CTRL+D
bash$
……好像行了—現在正式安裝它
bash$ su - root
# cp /usr/lib/pgsql/python/_pg.so /usr/lib/python1.5/lib-dynload

6.6 測試 Perl—Perl 介面

安裝 examples 套件,請參閱 例子 RPM,之後—


root# chown -R postgres.postgres /var/lib/pgsql/examples
bash$ cd /var/lib/pgsql/examples/perl5
bash$ perl ./example.pl

注意︰如果以上指令失敗了請做如此做︰全域變數 @INC 要在包括 site_perl 目錄中的 Pg.pm 模組,所以要如下使用 -I 選項。
bash$ perl -I/usr/lib/perl5/site_perl/5.004/i386-linux-thread ./example.pl

……你的 perl 已在存取 PostgreSQL 資料庫!!

要使用 perl 介面,請參閱 example.pl 檔。

6.7 測試 libpq, libpq++ 介面

安裝 examples 套件,請參閱 例子 RPM,之後—


root# chown -R postgres.postgres /var/lib/pgsql/examples
bash$ cd /var/lib/pgsql/examples/libpq
bash$ gcc testlibpq.c -I/usr/include/pgsql -lpq
bash$ export PATH=$PATH:.
bash$ a.out

bash$ cd /var/lib/pgsql/examples/libpq++
bash$ g++ testlibpq0.cc -I/usr/include/pgsql -I/usr/include/pgsql/libpq++
-lpq++ -lpq -lcrypt
bash$ ./a.out (注意︰不須理會錯誤訊息—如下)
> create table foo (aa int, bb char(4));
No tuples returned...
status = 1
Error returned: fe_setauthsvc: invalid name: , ignoring...
> insert into foo values ('4535', 'vasu');
No tuples returned...
status = 1
Error returned: fe_setauthsvc: invalid name: , ignoring...
> select * from foo;
aa   |bb   |
-----|-----|
4535 |vasu |
Query returned 1 row.
>
>CTRL+D
bash$

……你直接用 C/C++ 介面來存取 PostgreSQL 資料庫!!

6.8 測試 Java 介面

安裝 examples 套件,請參閱 例子 RPM 和安裝以下東西。


root# chown -R postgres.postgres /var/lib/pgsql/examples
bash$ cd /var/lib/pgsql/examples/jdbc
bash$ echo $CLASSPATH
 --> 應顯示 CLASSPATH=/usr/lib/pgsql/jdbc7.0-1.2.jar:.:/home/java/jdk1.2.2/lib:/usr/lib/pgsql:/usr/lib/pgsql/classes.zip:/usr/lib/pgsql/pg.jar

而 jdbc*.jar 的版本號碼要正確。
*.jar 檔要放在 /usr/lib/pgsql 和  /usr/libjdk*/lib 目錄中。

bash$ export CLASSPATH=/usr/lib/pgsql/jdbc7.0-1.2.jar:.:/home/java/jdk1.2.2/lib:/usr/lib/pgsql:/usr/lib/pgsql/classes.zip:/usr/lib/pgsql/pg.jar

編輯所有 psql.java 檔,把‘package’的行變為評論。
bash$ javac psql.java
bash$ java psql jdbc:postgresql:template1 postgres < password >[1] select * from pg_tables;
tablename       tableowner      hasindexes      hasrules
pg_type postgres        true    false   false
pg_attribute    postgres        true    false   false
[2]
CTRL+C
bash$

……你直接用 Java 介面來存取 PostgreSQL 資料庫!

6.9 測試 ecpg 介面

安裝 examples 套件,請參閱 例子 RPM,之後—


root# chown -R postgres.postgres /var/lib/pgsql/examples
bash$ cd /var/lib/pgsql/examples/ecpg
bash$ ecpg test1.pgc -I/usr/include/pgsql
bash$ cc test1.c -I/usr/include/pgsql -lecpg -lpq -lcrypt
bash$ createdb mm
bash$ ./a.out

……你直接用嵌入式 SQL 來存取 PostgreSQL 資料庫!

6.10 測試 SQL 的例子—自訂資料型態和函數

安裝 examples 套件,請參閱 例子 RPM,之後—


root# chown -R postgres.postgres /var/lib/pgsql/examples
bash$ cd /var/lib/pgsql/examples/sql
未寫好…

6.11 測試 Tcl/TK 介面

Tck/Tk 的例子是 pgaccess 程式。 使用一個文字編輯器閱讀 /usr/bin/pgaccess 檔案—


bash$ view /usr/bin/pgaccess
bash$ export DISPLAY=<你電腦的主機名>:0.0
bash$ createdb mydb
bash$ pgaccess mydb

6.12 測試 ODBC 介面

  1. http://www.insightdist.com/psqlodbc/ 取得 win32 pgsql odbc 驅動程式
  2. 另外請參閱 /usr/lib/libpsqlodbc.a

6.13 測試 MPSQL Motif-worksheet 介面

http://www.mutinybaysoftware.com 取得 RPM。

6.14 確認

要確認 PostgreSQL 的高品質,執行 Regression 測試套件︰ 以 root 身份簽入


# rpm -i postgresql*test.rpm
閱讀 README 檔或安裝源程式,它已有 regress 目錄
# rpm -i postgresql*.src.rpm
# cd /usr/src/redhat/SPECS
# more postgresql*.spec (以察看需要安裝哪些 RPM 套件)
# rpm -bp postgresql*.spec (…這樣會準備該套件)

Regression 測試需要 Makefiles 和類似 *fmgr*.h 的標頭檔,可用以下指令
產生—
# rpm --short-circuit -bc postgresql*.spec (走捷徑!)
看到‘make -C common  SUBSYS.o’後按 CTRL-C 終止工作。這時候 configure 
已經成功,所有 Makefiles 和標頭檔也已產生。你不再需要讓它繼續下去。
# cd /usr/src/redhat/BUILD
# chown -R postgres postgresql*
# su - postgres
bash$ cd /usr/src/redhat/BUILD/postgresql-6.5.3/src/test/regress
bash$ more README
bash$ make clean; make all runtest
bash$ more regress.out

6.15 緊急除錯

有時除錯嵌補會在主要的推出 PostgreSQL 的主要版本之後出現。你可依據自己需要,自行進行修補。請跟從以下步驟︰ 到 postgresql 程式碼的目錄

                # rpm -i postgresql*.src.rpm
                # cd /usr/src/postgresql6.5.3
                # man patch
                # patch -p0 < patchfile
                # make clean
                # make
嵌補檔是在
Next Previous Contents