PostgreSQL 是一款开源的关系型数据库管理系统,以其强大的特性和扩展性而闻名。因此,多数 Linux 发行版会在自己的软件库提供 PostgreSQL 安装软件包。但对于一些有个性化要求用户来说,使用源代码安装 PostgreSQL 则更为现实。
本教程将演示如何在 Linux 系统,通过源代码安装 PostgreSQL 系统。
1] Linux 系统安装依赖软件
在安装 PostgreSQL 之前,我们的系统首先应具备如下条件:
- 一个 Linux 系统发行版(示例使用 RHEL 9,其它发行版均可)
- 非 root 用户具有 sudo 权限以执行一些系统命令
- 系统安装了例如”GCC”以及”make”这样的基本开发工具包
为此我们首先使用如下命令安装所需要的依赖软件:
// 对于 RHEL 系列发行版 $ sudo yum groupinstall "development tools" $ sudo yum install zlib-devel readline-devel libicu-devel // 对于 Debian 系列发行版 $ sudo apt install gcc build-essential zlib1g-dev libreadline6-dev libicu-dev pkg-config
2] 下载 PostgreSQL 源代码
一旦依赖软件安装成功,就可以使用”wget”命令下载下载 >>官方<< 源代码了。使用如下命令下载最新版 16.1 的源代码:
$ wget https://ftp.postgresql.org/pub/source/v16.1/postgresql-16.1.tar.gz
软件包下载成功后,解压并查看源代码文件内容:
$ tar -zxvf postgresql-16.1.tar.gz $ cd postgresql-16.1 $ ls -alh
源文件示例显示如下:
图.1 PostgreSQL 源代码文件内容
3] 编译安装 PostgreSQL
由于 PostgreSQL 是一个开源数据库,因此可以根据需求从源代码构建它。我们可以通过为各种附加功能提供一个或多个命令行选项来自定义构建和安装过程。
使用以下命令获取有关各种选项和配置用法的帮助:
$ ./configure --help
命令会输出详细的配置选项和用法说明,有利于我们个性化构建 PostgreSQL。如果没有个性化要求,则执行如下命令进行默认选项构建:
$ ./configure
之后会检查系统并进行构建:
图.2 构建 PostgreSQL 源代码
构建完成后,会提示生成了”makefile”,表示构建成功,就可以进行编译安装了。编译安装命令如下:
$ make $ sudo make install
4] 初始化数据库
PostgreSQL 编译完成后,就代表其应用程序已经可以使用了。但是作为数据库管理系统,我们还需要对数据库进行初始以保证数据库功能正常。
通常情况下,我们使用用户”postgres”来管理数据库。使用如下命令创建用户、数据库数据目录并设置用户环境变量:
$ sudo useradd postgres $ sudo passwd postgres $ sudo mkdir -p /pgdatabase/data $ sudo chown -R postgres: /pgdatabase/data $ sudo sh -c "echo 'export PATH=$PATH:/usr/local/pgsql/bin' > /etc/profile.d/postgres.sh" $ source /etc/profile.d/postgres.sh
注意在环境变量中,设置 PostgreSQL 可执行程序目录位置依据发行版类型可能与示例不一致,根据对应位置修改命令即可。
之后,就可以使用如下命令切换用户并初始化数据库了:
$ su - postgres $ initdb -D /pgdatabase/data/ -U postgres -W
初始化命令中”-D”用于指定数据库的数据目录;”-U”用于指定数据库超级用户用户名;”-W”用于设置超级用户用户密码:
图.3 初始化 PostgreSQL 数据库
5] 启动数据库
数据库初始化成功后,会在数据库的数据目录生成一个配置文件”postgresql.conf”,修改该配置文件的内容,就可以设置一些数据库的启动项。例如设置数据库的侦听端口由默认的”5432″更改为”54321″,则修改配置文件的”port”选项即可(注意删除配置项前面的#号注释,以使自定义配置生效)。
全部配置设置完成后,就可以使用如下命令启动数据库服务了:
$ pg_ctl -D /pgdatabase/data/ start
启动成功后,可以使用如下命令查看数据库状态以及侦听端口来验证数据库启动成功:
$ ps -ef | grep postgres $ netstat -tnlp | grep 54321
图.4 启动 PostgreSQL 数据库
最后,就可以登录到数据库,查看数据库信息了:
$ psql -p 54321 postgres=# create database test; postgres=# \l
图.5 登录 PostgreSQL 数据库
现在,我们已经成功在 Linux 系统用源代码安装了 PostgreSQL。此过程为 PostgreSQL 安装提供了灵活性和控制,允许根据特定需求进行定制。