PostgreSQL7.0手册-管理员手册-23. 配置选项

减小字体 增大字体 作者:佚名  来源:本站整理  发布时间:2009-03-16 13:44:14
第二十三章. 配置选项
内容 
配制参数 (configure) 
制作参数(make) 
本地化支持 
Kerberos 认证 
用于配置的参数(configure)
configure 里可用的参数集可以通过键入下面命令获得 
$ ./configure --help
下面的参数可能会引起安装者的兴趣: 
Directories to install PostgreSQL in(安装 postgreSQL 的目录):
  --prefix=PREFIX         install architecture-independent files in PREFIX(把体系无关的文件装在 PREFIX)
                          [/usr/local/pgsql]
  --bindir=DIR            user executables in DIR (用户的可执行文件装在 DIR )[EPREFIX/bin]
  --libdir=DIR            object code libraries in DIR (目标代码库在 DIR )[EPREFIX/lib]
  --includedir=DIR        C header files in DIR (C 头文件放在 DIR)[PREFIX/include]
  --mandir=DIR            man documentation in DIR (手册文档在 DIR )[PREFIX/man]
Features and packages(特性和包):
  --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)(不包含 FEATURE (等效于 --enable-FEATURE=no))
  --enable-FEATURE[=ARG]  include FEATURE (包含 FEATURE )[ARG=yes]
  --with-PACKAGE[=ARG]    use PACKAGE (使用 PACKAGE)[ARG=yes]
  --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)(不使用 PACKAGE (等效于 --with-PACKAGE=no))
--enable and --with options recognized(可识别的附加选项):
  --with-template=template
                          use operating system template file(使用操作系统模板文件)
                              see template directory(参阅模板目录)
  --with-includes=dirs    look for header files for tcl/tk, etc in DIRS(tk/tcl等的头文件在 DIR)
  --with-libraries=dirs   look for additional libraries in DIRS(在DIR里查找附加库)
  --with-libs=dirs        alternate spelling of --with-libraries(--with-libraries 的可选写法)
  --enable-locale         enable locale support(打开本地化支持)
  --enable-recode         enable cyrillic recode support(打开西里尔字母(斯拉夫语言字母)记录的支持)
  --enable-multibyte      enable multibyte character support(打开多字节支持)
  --with-pgport=portnum   change default postmaster port(更改缺省的启动端口)
  --with-maxbackends=n    set default maximum number of server processes (设置缺省的最大服务器进程数)
  --with-tcl              build Tcl interfaces and pgtclsh(制作 Tcl 接口和 pgtclsh)
  --with-tclconfig=tcldir
                          tclConfig.sh and tkConfig.sh are in DIR(tclConfig.sh 和 tkConfig.sh 在 DIR)
  --with-perl             build Perl interface and plperl(制作 Perl 接口和plperl)
  --with-odbc             build ODBC driver package(制作 ODBC 驱动包)
  --with-odbcinst=odbcdir
                          change default directory for odbcinst.ini(为 odbcinst.ini 改变缺省路径)
  --enable-cassert        enable assertion checks (for debugging)(打开断言检查 (调试))
  --enable-debug          build with debugging symbols (-g) (带调试符号(-g)制作)
  --with-CC=compiler
                          use specific C compiler(使用声明的 C 编译器)
  --with-CXX=compiler
                          use specific C++ compiler(使用声明的 C++ 编译器)
  --without-CXX           prevent building C++ code (禁止制作 C++ 代码)
有些系统在制作 Postgres 的一些特性时有问题.例如,有些系统的 C++ 编译器坏了,可能就需要声明 --without-CXX 告诉制作过程忽略 libpq++ 的制作. 
如果你想用安装在非相同标准查找路径里的头文件或库制作 Postgres ,请使用 --with-includes 和 --with-libraries 选项.例如,你可能用这些制作一个实验版本的 Tcl.如果你需要为头文件或库声明超过一个的非标准目录,这样做: 

--with-includes="/opt/tcl/include /opt/perl5/include"

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

制作参数(make)
许多与安装相关的参数可以在 Postgres 安装的制作过程中设置. 
在大多数情况下,这些参数应该放置在一个专门为此目的而用的文件(Makefile.custom)里.缺省的发布版本不包含这个文件,所以你需要用一个文本编辑器创建一个.当升级安装时,你只需要在制作前简单地将旧的 Makefile.custom 拷贝到新安装中去即可. 

另外,你可以在 make 命令行上设置变量: 

make [ variable=value [...] ]
可以声明的变量的一部分有: 
POSTGRESDIR 
安装目录树的顶层. 
BINDIR 
应用和工具的路径. 
LIBDIR 
目标库的路径,包括共享库. 
HEADERDIR 
包含(头)文件的路径. 
ODBCINST 
安装过程中 psqlODBC (ODBC)配置文件的路径. 
还有其他一些不常用的配置参数.下面列出的许多选项在做Postgres 服务器端开发时很有用. 
  
CFLAGS 
为 C 编译器设置标志.应该赋予"+="以获得相关的缺省参数. 
YFLAGS 
为 yacc/bison 分析器设置标志.-v 可用于帮助诊断建立一个新的分析器的问题.应该赋予"+="以获得相关的缺省参数. 
USE_TCL 
打开 Tcl 接口的制作. 
HSTYLE 
从零开始将 DocBook(文档)制作成 HTML 风格.除非你从 doc/src/sgml/ 里 DocBook-兼容的SGML 源文档里开发新的文档,否则没有用处. 
PSTYLE 
从零开始制作 DocBook 风格的文档.除非你从 doc/src/sgml/ 里 DocBook-兼容的 SGML 源文档里开发新的文档,否则没有用处. 
下面是一个在一台PentiumPro Linux 系统上 Makefile.custom 的样例: 
# Makefile.custom
# Thomas Lockhart 1999-06-01

POSTGRESDIR= /opt/postgres/current
CFLAGS+= -m486 -O2

# documentation

HSTYLE= /home/tgl/SGML/db118.d/docbook/html
PSTYLE= /home/tgl/SGML/db118.d/docbook/print

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

本地化支持
注意: 作者是 Oleg Bartunov.请参阅 Oleg 的主页http://www.sai.msu.su/~megera/postgres/ 获取关于本地化和俄语支持的附加信息.
在为一个位于莫斯科的公司做项目时,我发现了postgresql还不支持国家字符集的问题.在研究了可能存在的解决方案后,我决定自己开发本地化支持.我不是一个C程序员,但在使用perl(调试)和glimpse的过程中已经有一些本地化编程经验.在经过几天的 Postgres 代码树的分析后,我对src/backend/utils/adt/varlena.c 和 src/backend/main/main.c 做了很小的改动后就获得了我需要的特性!我只实现了对 LC_CTYPE 和 LC_COLLATE 的支持,但很快其他人就增加了 LC_MONETARY 的支持.我收到了很多人发给我的关于这个补丁的信息,所以我决定将它发送给开发人员然后(让我感到惊奇的是)这个补丁被集成到了Postgres 发布版本中去了! 
人们经常抱怨说他们的(Postgres)本地化不能正常工作.下面是一些常见错误: 

在编译前没有正确的配置 postgresql.你在运行 configure 时必须打开--enable-locale 选项以支持本地化.在启动 postmaster 时没有正确设置运行环境.在运行 postmaster 之前你必须定义环境变量 LC_CTYPE 和LC_COLLATE,因为后端从环境(变量)中获得关于本地化的信息.我使用下面shell 脚本(runpostgres): 
       #!/bin/sh
       
       export LC_CTYPE=koi8-r
       export LC_COLLATE=koi8-r
       postmaster -B 1024 -S -D/usr/local/pgsql/data/ -o '-Fe'
然后从 rc.local 里运行之 
       /bin/su - postgres -c "/home/postgres/runpostgres"
OS 内损坏了的本地支持(例如,Linux下 libc 里的本地支持有时被修改过了,这样会造成许多麻烦).最新的 perl 也支持本地化并且如果本地化被损坏了,使用 perl -v 将报下面的错: 
       8:17[mira]:~/WWW/postgres>setenv LC_CTYPE not_exist
       8:18[mira]:~/WWW/postgres>perl -v
       perl: warning: Setting locale failed.
       perl: warning: Please check that your locale settings:
       LC_ALL = (unset),
           LC_CTYPE = "not_exist",
           LANG = (unset)
       are supported and installed on your system.
       perl: warning: Falling back to the standard locale ("C").
W本地化文件位置放错了!可能的路径包括:/usr/lib/locale (Linux, Solaris),/usr/share/locale (Linux),/usr/lib/nls/loc (DUX 4.0).使用 man locale 找出正确的路径.在 Linux 下我在 /usr/lib/locale 和 /usr/share/locale 之间做了一个符号链接以确保下一个 libc 版本不会破坏我的本地设置.
有何优点?
你可以将 ~* 和 order by 操作符用于包含国家代码集字符的字符串上.非英语用户绝对需要它.如果你不想用本地化支持只需要取消 USE_LOCALE 变量的定义即可.
有何缺点?
使用本地化支持有一个显而易见的缺点 - 那就是速度!所以只有在你真正需要本地支持时才使用它. 

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

Kerberos 认证
Kerberos (译注:这是古希腊神话里的一条多头狗。)是一种适用于在公共网络上进行分布计算的工业标准的安全认证系统. 
如何获得
Kerberos 认证系统不是随着 Postgres 发布的.Kerberos 的各种版本通常是操作系统中的一个可选的软件包.另外,可以从 MIT 雅典娜计划(ftp://athena-dist.mit.edu/) 处获得源码. 
注意:即使你的操作系统供应商给你提供了一个版本,你可能还是要从 MIT 拿一个版本,因为有些供应商的版本是经过有意的弱化的或者和 MIT 版本不能互操作.
在美国和加拿大以外的地区的用户需要知道发布版里Kerberos 的实际代码是受到美国政府出口法规约束的版本. 
有关你的 Kerberos 的问题应该向你的供应商或 MIT 雅典娜计划 询问.要注意 FAQL (常见问题列表Frequently-Asked Questions Lists)经常张贴在 Kerberos邮件列表 (发送请求邮件),和 USENET 新闻组.

安装
Kerberos 的安装在 Kerberos 安装信息 里有详细讨论.确信服务器的密钥文件 (srvtab 或 keytab)可以被 Postgres 帐户读取. 
Postgres 和其客户端可以和 MIT Kerberos 版本 4 或 5 的协议一起编译,只要在文件 src/Makefile.global 里将变量 KRBVERS 设置为合适的值即可.你还可以更改Postgres 需要查找的相关库,头文件和它自己的服务器密钥文件的路径. 

在编译完成之后,Postgres 必须作为 Kerberos 服务注册.参阅 Kerberos 操作信息 和相关手册页获取关于注册服务的详细信息.

操作
在初始安装后,Postgres 应该在任何方面都作为一个正常的 Kerberos服务进行运行.关于认证的详细信息,请参考 PostgreSQL 用户手册 关于 postmaster 和 psql 的章节. 
在 Kerberos 版本 5 中,对用户和服务的名称做了下面假设: 

用户的基本名称 (anames)假定为在第一部分里包含实际的 Unix/Postgres 用户名. 
Postgres 服务假定为含有两个组成部分,服务名和主机名,就象在版本4里那样被规范化了.(也就是说,删去了所有域后缀).

表 23-1. Kerberos 参数实例 
   
 
 参数 实例 
user  frew@S2K.ORG  
user  aoki/HOST=miyu.S2K.Berkeley.EDU@S2K.ORG  
host  postgres_dbms/ucbvax@S2K.ORG  

对版本4的支持将在 MIT 版本5的正式发布一段时间后被取消. 

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

Tags:

作者:佚名
分享到: 微信 更多