通过源码编译安装PostgreSQL步骤及问题总结
今天博主在ubuntu 10.04安装从enterprisedb下载的postgresql安装包是出现一个问题,运行后提示“Segmentation fault”错误,安装失败。之前我在12.04版的系统中有安装过,一切正常。之后公司领导说这个可能是系统不兼容的关系,所以需要用源码安装。当然,源码安装比安装包麻烦了许多。
###1.下载源码包并解压。源码下载地址:http://www.postgresql.org/ftp/source/,这里博主选用的是9.3.2版本。 root@vm-199:~# wget http://ftp.postgresql.org/pub/source/v9.3.2/postgresql-9.3.2.tar.gz root@vm-199:~# tar zxvf postgresql-9.3.2.tar.gz ###2.编译安装,安装到/opt/PostgreSQL/9.3目录。 root@vm-199:~# cd postgresql-9.3.2 root@vm-199:~# ./configure --prefix=/opt/PostgreSQL/9.3 root@vm-199:~# make root@vm-199:~# make install ###3.看到PostgreSQL installation complete.说明安装成功。 ###4.创建postgres用户和数据目录/opt/PostgreSQL/9.3/data,修改数据目录所有者和权限。 root@vm-199:~# adduser postgres root@vm-199:~# mkdir -p /opt/PostgreSQL/9.3/data root@vm-199:~# chown -R postgres.postgres /opt/PostgreSQL/9.3/data root@vm-199:~# chmod -R go-rwx /opt/PostgreSQL/9.3/data ###5.设置全局环境变量 root@vm-199:~# vi /etc/profile ###添加如下配置到打开文件中。 export PATH=/opt/PostgreSQL/9.3/bin:$PATH export PGDATA=/opt/PostgreSQL/9.3/data export PGHOME=/opt/PostgreSQL/9.3 export LANG=zh_CN.UTF-8 export PGPORT=5432 ###6.初始化数据库,启动。 postgres@vm-199:~$ initdb -D /opt/PostgreSQL/9.3/data --locale=zh_CN.UTF8 postgres@vm-199:~$ pg_ctl start
这里博主在第二步的时候碰到过一个问题,运行./configure –prefix=/opt/PostgreSQL/9.3后提示“configure: error: readline library not found”的错误,在askubuntu上看到解决办法是先安装libreadline-dev依赖。
最后我们把postgresql添加到服务中,设置开机自动启动。
root@vm-199:~# cd /etc/init.d root@vm-199:/etc/init.d# wget http://download.chekiang.info/blog/postgresql-9.3 root@vm-199:/etc/init.d# chmod +x postgresql-9.3 root@vm-199:/etc/init.d# update-rc.d postgresql-9.3 defaults
至此postgresql的安装应该已经全部结束,但是博主在导入数据的时候发现postgres_fdw扩展没有安装。按照之前这篇文章http://blog.nbqykj.cn/?p=1434.html介绍的postgres_fdw安装时出现错误,提示如下。
postgres=# create extension postgres_fdw; ERROR: could not open extension control file "/opt/PostgreSQL/9.3/share/postgresql/extension/postgres_fdw.control": No such file or directory
查看postgresql官方文档,原来编译安装的时候扩展默认是不安装的,“When building from the source distribution, these components are not built automatically”。手动安装postgres_fdw扩展比较简单,进入源码目录下的/contrib/postgres_fdw,分别运行make和make install进行安装,成功再运行create extension postgres_fdw就不会提示错误了。
有关扩展安装可以查看官方介绍:http://www.postgresql.org/docs/current/static/contrib.html 。