实验环境:

操作系统:FreeBSD 8.0-RELEASE
CPU构架:amd64
数据库版本:postgresql-8.4.5


1. 下载PostgreSQL安装包:

在Web浏览器中打开http://www.postgresql.org/ftp/source/,找到要下载的源码包URL地址,然后执行如下命令:

# cd /tmp 
# fetch http://www.master.postgresql.org/redir/391/f/source/v8.4.5/postgresql-8.4.5.tar.bz2




2. 编译安装PostgreSQL:

# tar -jxvf postgresql-8.4.5.tar.bz2 
# cd postgresql-8.4.5 
# ./configure --prefix=/usr/local/PostgreSQL 
# make && make install 




3. 初始化PostgreSQL数据库:

# pw user add postgresql -s /bin/csh 
# passwd postgresql 
# mkdir -p /data 
# chown postgresql /data/ 
# su postgresql 
# /usr/local/PostgreSQL/bin/initdb -D /database/ 


注: 在初始化PostgreSQL数据库时,为了以后的维护方便,建议将数据文件建立在目录下,如我这里的/data。数据库文件就在此目录下的base里,如/data/base/下。



4. 启动数据库:

# nohup /usr/local/PostgreSQL/bin/postgres -D /database &  //启动数据库并后台运行 
# /usr/local/PostgreSQL/bin/psql -l //列出所有数据库 
# /usr/local/PostgreSQL/bin/psql postgres //登录到postgres数据库 
# /usr/local/PostgreSQL/bin/createdb aiezu //建立database 



5. 疑难解答:

①. 问: 在"make && make install"时报以下错误:

You must use GNU make to build PostgreSQL. 
*** Error code 1 


答:在make时会用到gmake,所以请先用ports安装gmake,具体操作请参考相关文章。


②. 问: 在执行fetch命令时报如下错误:

fetch: ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/make-3.81.tar.bz2: No address record 
=> Couldn't fetch it - please try to retrieve this 
=> port manually into /usr/ports/distfiles/ and try again. 
*** Error code 1 


答:请检查FreeBSD是否正常连接网络,是否设置了IP地址,默认路由,DNS服务器


③. 问:执行/usr/local/PostgreSQL/bin/psql命令时:

psql: FATAL:  database "postgresql" does not exist 


答: 引起此错误的原因是psql后面没有加数据库名时,FreeBSD默认会以$USER为数据库名进行连接。所以请在psql后面加上存在的数据库名。


④. 问: 执行/usr/local/PostgreSQL/bin/psql命令时:

psql: could not connect to server: Connection refused  
Is the server running locally and accepting  
connections on Unix domain socket "/tmp/.s.PGSQL.5432"? 


答: 请确认postgresql数据库服务是否成功启动。