基础环境
公司的产品由于各种原因(CentOS 8停止支持/信创要求),产品基本上将全面转向国产的操作系统,比如Kylin或者OpenEuler,但是开源软件对于国产操作系统基本上都没有编译的二进制包,需要自己编译。
openEuler release 22.03 (LTS-SP1)
postgresql-15.3
编译环境准备
必须环境
需要GNU make 版本 3.81 或 更高;
1
2
3
4
5
6
7
|
$ make version
GNU Make 4.3
为 x86_64-openEuler-linux-gnu 编译
Copyright (C) 1988-2020 Free Software Foundation, Inc.
许可证:GPLv3+:GNU 通用公共许可证第 3 版或更新版本<http://gnu.org/licenses/gpl.html>。
本软件是自由软件:您可以自由修改和重新发布它。
在法律允许的范围内没有其他保证。
|
满足要求
需要一个ISO / ANSI C 编译器(至少符合 C99)。
1
2
3
4
5
|
$ gcc --version
gcc (GCC) 10.3.1
Copyright © 2020 Free Software Foundation, Inc.
本程序是自由软件;请参看源代码的版权声明。本软件没有任何担保;
包括没有适销性和某一专用目的下的适用性担保。
|
满足要求
除了gzip或bzip2之外,还需要tar来解压源分发包。
1
2
3
4
5
6
7
8
|
$ tar --veriosn
tar (GNU tar) 1.34
Copyright (C) 2021 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
由 John Gilmore 和 Jay Fenlason 所写。
|
满足要求
默认使用GNU Readline库,它允许psql(PostgreSQL 命令行 SQL 解释器)记住您键入的每个命令,并允许您使用箭头键来调用和编辑以前的命令。
1
|
$ dnf install -y readline-devel
|
- 默认使用zlib压缩库。如果您不想使用它,则必须将选项指定
--without-zlib
为configure
。使用此选项禁用pg_dump和pg_restore中对压缩存档的支持。
1
|
$ dnf install -y zlib-devel
|
可选环境
-
要构建服务器编程语言PL/Perl,需要完整安装Perl,包括libperl
库和头文件,所需的最低版本是Perl 5.8.3。
-
要构建PL/Python服务器编程语言,需要安装带有头文件和sysconfig模块的Python,所需的最低版本是Python 3.2。
-
要构建PL/Tcl过程语言,您当然需要安装Tcl,所需的最低版本是Tcl 8.4。
-
要启用本地语言支持 ( NLS ),即以英语以外的语言显示程序消息的能力,需要实现Gettext API,某些操作系统内置了此功能(例如:Linux、NetBSD、Solaris ),对于其他系统,可以从gettext - GNU Project - Free Software Foundation下载附加包。如果正在使用GNU C 库中的Gettext实现,那么还需要GNU Gettext包用于某些实用程序。
-
如果你想支持加密的客户端连接,你需要OpenSSL 。在没有(Windows 除外)的平台上生成随机数也需要OpenSSL/dev/urandom
,所需的最低版本为 1.0.1。
-
如果您想支持使用这些服务进行身份验证,则需要Kerberos、OpenLDAP和/或PAM 。
-
LZ4:如果想使用该方法支持数据压缩,你需要LZ4 ,参阅default_toast_compression和wal_compression。
-
Zstandard:如果您想使用该方法支持数据压缩,则需要Zstandard ;见wal_compression,所需的最低版本为 1.4.0。
上面的我都不需要,默认安装就行了。
软件编译
1
|
$ tar xvf postgresql-15.3.tar.gz
|
对于我来说我不需要更多的编译参数,用prefix指定下安装目录就可以了,–prefix选项是配置安装目录,如果不配置该选项,安装后可执行文件默认放在/usr/local/bin,库文件默认放在/usr/local/lib,配置文件默认放在/usr/local/etc,其它的资源文件放在/usr/local/share,比较凌乱。
1
|
$ ./configure --prefix=/data/database/postgresql
|
1
|
$ make -j8 #我是8个核心,所以8核心并行编译
|
编译过程未出现Error错误字样,代表编译正常结束。
这个执行完之后程序就会被编译为二进制到安装目录,到这儿程序编译就完成了
软件设置
1
|
$ mkdir -p /data/database/postgresql/data
|
1
|
$ chown -R postgres.postgres /data/database/postgresql
|
1
2
3
|
$ touch /etc/profile.d/pg.sh
$ echo "export PATH=\$PATH:/data/database/postgresql/bin" > /etc/profile.d/pg.sh
$ source /etc/profile
|
1
|
$ initdb -D /data/database/postgresql/data
|
1
2
3
4
5
|
# 开启数据库端口监听
$ cat >> /data/database/postgresql/data/postgresql.conf <<-EOF
listen_addresses = '*'
port = 5432
EOF
|
1
2
|
# 配置远程访问
$ echo "host all all 0.0.0.0/0 md5" >> /data/database/postgresql/data/pg_hba.conf
|
1
|
$ pg_ctl -D /data/database/postgresql/data -l /data/database/postgresql/logs/logfile start
|
1
|
ALTER USER postgres WITH PASSWORD '你的密码';
|