Chinaunix首页 | 论坛 | 博客
  • 博客访问: 103776952
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-04-29 23:23:57

  也许多数朋友没有遇到 postgresql8.0.1 在 slackware10.1 上的安装问题。但这个问题困扰了我很长时间了。可能是在安装 slackware10.1 的时候,我没有把安装包的依赖关系解决好,导致了我始终无法编译安装 postgresql8.0.1。

  也曾经想过寻找一个 rpm 来转换为 tgz 安装包试试看,但终究因为以下两个原因放弃了:

  1、一般的 rpm 包是基于 RH 之类的,毕竟跟 SLK 有不少差别。

  2、rpm 包通常都是在英语环境下编译的,我担心中文本土化支持的问题。

  闲来无事到 distrowatch.com 看看几个发行版的排名,但无意间发现了一个在 SLK 基础上发展起来的linux 版本:plamo。仔细一对比 plamo 与slk在默认的软件支持,发现 plamo 居然带有 slk 没有包含在ISO 内的而其它 linux 发行版通常都有的,我寻找了很久的 postgresql。

  一番查找之后终于找到了 plamo的postgresql8.0.1 的安装包,地址如下:

  

  下载后抱着试试看的想法安装,结果一切顺利。下面是安装过程的信息,看一下就清楚了:

  Installing package postgresql-8.0.1-plamo-i386...
  PACKAGE DEscriptION:
  Executing install script for postgresql-8.0.1-plamo-i386...
  Entry postgres is already in /etc/services.
  Initializing default data base by user postgres ...
  The files belonging to this database system will be owned by user "postgres".
  This user must also own the server process.

  The database cluster will be initialized with locale C.

  creating directory /opt/postgresql-8.0.1/data ... ok
  creating directory /opt/postgresql-8.0.1/data/global ... ok
  creating directory /opt/postgresql-8.0.1/data/pg_xlog ... ok
  creating directory /opt/postgresql-8.0.1/data/pg_xlog/archive_status ... ok
  creating directory /opt/postgresql-8.0.1/data/pg_clog ... ok
  creating directory /opt/postgresql-8.0.1/data/pg_subtrans ... ok
  creating directory /opt/postgresql-8.0.1/data/base ... ok
  creating directory /opt/postgresql-8.0.1/data/base/1 ... ok
  creating directory /opt/postgresql-8.0.1/data/pg_tblspc ... ok
  selecting default max_connections ... 100
  selecting default shared_buffers ... 1000
  creating configuration files ... ok
  creating template1 database in /opt/postgresql-8.0.1/data/base/1 ... ok
  initializing pg_shadow ... ok
  enabling unlimited row size for system tables ... ok
  initializing pg_depend ... ok
  creating system views ... ok
  loading pg_description ... ok
  creating conversions ... ok
  setting privileges on built-in objects ... ok
  creating information schema ... ok
  vacuuming database template1 ... ok
  copying template1 to template0 ... ok

  WARNING: enabling "trust" authentication for local connections
  You can change this by editing pg_hba.conf or using the -A option the
  next time you run initdb.

  Success. You can now start the database server using:

  postmaster -D /opt/postgresql-8.0.1/data
  or
  pg_ctl -D /opt/postgresql-8.0.1/data -l logfile start

  ############################################
  # Please run #
  # /opt/postgresql-8.0.1/apps/utils/cert/mkrsakey.sh #
  # after you install openssh. #
  ############################################
  73800 semi-random bytes loaded
  Generating RSA private key, 1024 bit long modulus
  .........++++++
  ........++++++
  e is 65537 (0x10001)
  /opt/postgresql-8.0.1/bin/pgsqld: postmaster(PostgreSQL server) started.
  /opt/postgresql-8.0.1/bin/pgsqld: Proccess ID = 5272
  Initializing default data base by user postgres ...
  running... createdb postgres
  CREATE DATABASE
  running... createuser www with 7.4.x, 8.0 createuser command
  CREATE USER
  CREATE USER
  CREATE DATABASE

  为了看看对中文的支持好不好,我做了以下测试:

  #su postgres
  >pwd
  /opt/postgresql-8.0.1/bin
  >psql

  欢迎使用 psql 8.0.1, PostgreSQL 的交互终端.

  输入: \copyright 获取发布信息
  \h 获取 SQL 命令的帮助
  \? 获取 psql 命令的帮助
  \g 或者以分号作为执行查询的结尾
  \q 退出

  postgres=# create table s("序号" varchar(5));
  CREATE TABLE
  postgres=# \d s
  表 "public.s"
  字段名 | 类型 | 修饰词
  --------+----------------------+--------
  序号 | character varying(5) |

  postgres=# \q

  一切正常,中文支持很好,我 locale 是 zh_CN.gbk。

  上面的帖子发的有些匆忙,还有一点没有补充,那个plamo的安装包直接建立的数据库是 EUC_JP 编码的……而且由于默认安装是使用 postgres 这个用户来管理数据库,更改其用户的环境变量比较麻烦,我费了点周章,把系统中已有的用户(bash 环境变量用起来顺手)改成了 postgresql 的管理用户。并重新建立了数据库,编码也更正为中文支持更好的 SQL_ASCII。

  具体过程如下:

  一、额外的步骤

  删除 postgres 用户及 pgsql 组,原因是我根本不知道这个用户的密码(就如同 mysql 安装包添加的用户一样)始终是个心病……其实如果不删除也可以。

  #userdel postgresql
  #groupdel pgsql

  二、清理安装包所建立的目录

  该安装包在 /opt 目录下建立了,postgresql-8.0.1 的目录和指向该目录的 pgsql 链结。

  #pwd
  /opt
  #mv postgresql-8.0.1 postgres
  #rm -f pgsql

  三、为系统中已经有的用户准备 postgresql 的运行管理环境

  以普通用户 longwu 登录

  $su
  #pwd
  /opt
  #chown -R longwu:longwu postgres
  $pwd
  /home/longwu
  $vi .profile

  在文件末尾添加以下内容

  ##############################
  # PostgreSQL
  LD_LIBRARY_PATH=/opt/postgres/lib
  export LD_LIBRARY_PATH
  PGLIB=/opt/postgres/lib
  PGDATA=/opt/postgres/data
  PATH=$PATH:/opt/postgres/bin
  MANPATH=$MANPATH:/opt/postgres/man
  export PGLIB PGDATA PATH MANPATH
  ##############################

  最好同样修改 ~/.bash_profile和~/.bashrc(这要看你的环境变量设置文件是如何嵌套的)在以上 3 种环境变量配置文件全部添加这段内容是个简单的笨办法,高手不推荐啦。

  $source ~/.profile
  $source ~/.bashrc
  $source ~/.bash_profile

  到现在为止环境为 longwu 这个普通用户管理 postgresql 数据库准备的环境变量就配置好了。

  四、初始化数据库

  1、先删除掉软件安装包默认创建的数据库。

  $pwd
  /opt/postgres/data
  $rm -rf *

  2、初始化 PostgreSQL
  $initdb -E=SQL_ASCII

  3、修改数据库配置文件,主要是为了方便本地联结数据库。
  #vi postgresql.conf
  把 ssl=true 更改为 false,因为我是为了个人学习,启用 ssl 还要创建 ssl 验证的 key,麻烦……
  $vi pg_hba.conf
  因为我的网络环境用不到 IPv6,如果不修改会在数据库启动的时候报错。
  把 IPv6 项目下的那一行用#注销掉。
  ####host all all ::1/128 trust

  4、终于要启动数据库了
  $pwd
  /opt/postgres
  $mkdir temp
  $pg_ctl -D data/ -l temp/logfile start

  5、建立用户数据库实例
  createdb -E=SQL_ASCII longwu

  6、使用 psql 联结数据库,并作简单测试

  $psql
  欢迎使用 psql 8.0.1, PostgreSQL 的交互终端.

  输入: \copyright 获取发布信息
  \h 获取 SQL 命令的帮助
  \? 获取 psql 命令的帮助
  \g 或者以分号作为执行查询的结尾
  \q 退出

  =# \encoding
  SQL_ASCII

  =# create table test("妳好" varchar(5));
  CREATE TABLE
  =# \d test
  表 "public.test"
  字段名 | 类型 | 修饰词
  --------+----------------------+--------
  你好 | character varying(5) |

  注意这个“你”可是 gb2312(EUC_CN) 字符集不包括的啊,可见 SQL_ASCII 对中文的扩展字符
集支持不错。最关键的是不用看到那个 EUC_JP,感觉好多了。
阅读(530) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~