PostgreSQL:编译安装常见问题

PostgreSQL 生产环境一般使用编译安装方式,今天刚好有个测试库需要重新安装,重新梳理了安装过程中遇到的常见问题,觉得有必要整理一下,首先看下安装步骤,以下摘自手册,以 9.1版本 CentOS 5.5 平台安装为例,其它版本安装过程类似。

这篇 BLOG 不详细介绍安装过程,关于安装步骤,参考:RedHat Enterprise 5上安装 Postgresql

安装简版

1
2
3
4
5
6
7
8
9
10
11
12
1) ./configure
2) gmake
3) su
4) gmake install
5) adduser postgres
6) mkdir /usr/local/pgsql/data
7) chown postgres /usr/local/pgsql/data
8) su - postgres
9) /usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data
10) /usr/local/pgsql/bin/postgres -D /usr/local/pgsql/data >logfile 2>&1 &
11) /usr/local/pgsql/bin/createdb test
12) /usr/local/pgsql/bin/psql test

备注:上面 12 步包括了 PostgreSQL 软件的安装,PG 服务初始化以及建库操作。其中 1-4 是软件安装过程,在第一步 configure 过程中遇到的问题较多。

安装需求

2.1 必须的系统组件

  1. 需要 3.8 版本或更新的 GNU make version
  2. 需要一个ISO/ANSIC编译器(至少兼容C89),推荐使用最近版本的GCC
  3. 需要tar来解压,也需要 gzip 或者 bzip2
  4. GNU Readline 库: 这可以记住 psql 历史命令
  5. PG默认安装时会使用 zlib压缩库 ,这个工具支持 pg_dump 和 pg_restore 的压缩选项。

2.2 可选的系统组件
以下的包是可选的,在默认安装时并不需要,当某些特定的选项打开时才可能需要。

  1. PL/Perl
  2. PL/Python
  3. PL/Tcl
  4. Native Language Support (NLS)
  5. 如果要支持认证或加密,可能需要 Kerberos, OpenSSL, OpenLDAP, 或者 PAM,
    备注:可选组件根据需求选择安装。

编译常见问题

下载介质并解压后,进行文件目录执行 configure 操作,这步操作遇到的问题较多,例如:

问题1:gcc 没安装

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
[root@host postgresql-9.1.9]# ./configure --prefix=/opt/pgsql9.1.9 --with-pgport=1921 --with-wal-blocksize=16
checking build system type... x86_64-unknown-linux-gnu
checking host system type... x86_64-unknown-linux-gnu
checking which template to use... linux
checking whether to build with 64-bit integer date/time support... yes
checking whether NLS is wanted... no
checking for default port number... 1921
checking for block size... 8kB
checking for segment size... 1GB
checking for WAL block size... 16kB
checking for WAL segment size... 16MB
checking for gcc... no
checking for cc... no
configure: error: in `/opt/soft_bak/postgresql-9.1.9':
configure: error: no acceptable C compiler found in $PATH
See `config.log' for more details.

[root@host postgresql-9.1.9]# gcc -version
-bash: gcc: command not found

解决方法
安装gcc包,如下:

1
2
3
4
5
6
7
[root@host172-16-3-215 ~]# yum install gcc

[root@host172-16-3-215 ~]# gcc --version
gcc (GCC) 4.1.2 20080704 (Red Hat 4.1.2-54)
Copyright (C) 2006 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

问题2:readline 没安装

1
2
3
4
5
6
7
8
9
10
[root@host postgresql-9.1.9]# ./configure --prefix=/opt/pgsql9.1.9 --with-pgport=1921 --with-wal-blocksize=16
....省略部分
....
checking for library containing gethostbyname_r... none required
checking for library containing shmget... none required
checking for library containing readline... no
configure: error: readline library not found
If you have readline already installed, see config.log for details on the
failure. It is possible the compiler isn t looking in the proper directory.
Use --without-readline to disable readline support.

解决方法
安装 readline 包,如下:

1
root@host ~]# yum install readline-devel.x86_64

备注:安装 readline 组件开发包。

问题3:zlib 没安装

1
2
3
4
5
6
7
8
9
[root@host postgresql-9.1.9]# ./configure --prefix=/opt/pgsql9.1.9 --with-pgport=1921 --with-wal-blocksize=16
....省略部分
....
checking for library containing fdatasync... none required
checking for library containing gethostbyname_r... none required
checking for library containing shmget... none required
checking for library containing readline... -lreadline -ltermcap
checking for inflate in -lz... no
configure: error: zlib library not found

解决方法
安装 zlib 开发包,如下:

1
[root@host ~]# yum install zlib-devel.x86_64

备注:安装 zlib 组件开发包,暂时先总结这些,之后遇到新问题再补充。

参考

最后推荐和张文升共同编写的《PostgreSQL实战》,本书基于PostgreSQL 10 编写,共18章,重点介绍SQL高级特性、并行查询、分区表、物理复制、逻辑复制、备份恢复、高可用、性能优化、PostGIS等,涵盖大量实战用例!

购买链接:https://item.jd.com/12405774.html

PostgreSQL实战
感谢支持!
0%