网站搜索

如何在 Linux 中使用源代码安装 PostgreSQL


PostgreSQL 是一个开源关系数据库管理系统,以其强大的功能和可扩展性而闻名。虽然许多 Linux 发行版通过其包管理器提供 PostgreSQL,但从源代码安装它可以实现更好的定制和控制。

在本文中,我们将介绍如何在 Linux 系统上使用源代码安装来安装 PostgreSQL 16

对于那些从发行包管理器寻求更简单的安装方法的人,请遵循以下指南:

先决条件

在深入了解 PostgreSQL 安装过程之前,请确保您的系统满足以下先决条件:

  • Linux 发行版(在本指南中,我们将使用 Debian 进行演示)。
  • 具有 sudo 权限的非 root 用户的 Linux 系统。
  • 安装了GCCMake等基本开发工具。

1. 在 Linux 上安装必备软件

首先,使用分发包管理器安装基本的开发工具,例如 GCCMake,如图所示。

在基于 RHEL 的发行版上,例如 CentOSFedoraRocky LinuxAlma Linux

sudo yum groupinstall development-tools
sudo yum install zlib-devel readline-devel libicu-devel

在基于 Debian 的发行版上,例如 UbuntuLinux Mint

sudo apt install gcc build-essential zlib1g-dev libreadline6-dev libicu-dev pkg-config

2.下载PostgreSQL源代码

安装所需的先决条件后,直接在系统上使用以下 wget 命令从官方 postgres 网站下载源代码 tar 文件。截至撰写本文时,最新版本是 PostgreSQL 16.1

wget https://ftp.postgresql.org/pub/source/v16.1/postgresql-16.1.tar.bz2

接下来,使用 tar 命令提取下载的 tarball 文件。将创建一个名为 postgresql-16.1 的新目录。

tar -xvf postgresql-16.1.tar.bz2
cd postgresql-16.1/
ls -l

示例输出

-rw-r--r--.  1 tecmint tecmint    365 Nov  7 03:34 aclocal.m4
drwxr-xr-x.  2 tecmint tecmint   4096 Nov  7 03:47 config
-rwxr-xr-x.  1 tecmint tecmint 584560 Nov  7 03:34 configure
-rw-r--r--.  1 tecmint tecmint  87292 Nov  7 03:34 configure.ac
drwxr-xr-x. 61 tecmint tecmint   4096 Nov  7 03:47 contrib
-rw-r--r--.  1 tecmint tecmint   1192 Nov  7 03:34 COPYRIGHT
drwxr-xr-x.  3 tecmint tecmint   4096 Nov  7 03:47 doc
-rw-r--r--.  1 tecmint tecmint   4288 Nov  7 03:34 GNUmakefile.in
-rw-r--r--.  1 tecmint tecmint    277 Nov  7 03:34 HISTORY
-rw-r--r--.  1 tecmint tecmint  64601 Nov  7 03:48 INSTALL
-rw-r--r--.  1 tecmint tecmint   1875 Nov  7 03:34 Makefile
-rw-r--r--.  1 tecmint tecmint 102017 Nov  7 03:47 meson.build
-rw-r--r--.  1 tecmint tecmint   6266 Nov  7 03:34 meson_options.txt
-rw-r--r--.  1 tecmint tecmint   1213 Nov  7 03:34 README
drwxr-xr-x. 16 tecmint tecmint   4096 Nov  7 03:48 src

3. 从源配置 PostgreSQL

由于 postgres 是一个开源数据库,因此可以根据需要从源代码构建它。我们可以通过为各种附加功能提供一个或多个命令行选项来自定义构建和安装过程。

使用以下命令获取有关各种选项和配置用法的帮助,如图所示。

./configure --help

现在运行配置脚本,它将检查您的系统的依赖关系并相应地配置构建。

./configure

4. 从源安装 PostgreSQL

配置完成后,使用以下命令从源构建并安装 PostgreSQL。

make
sudo make install

5.创建Postgres用户

现在创建一个 postgres 用户和目录,用作初始化数据库集群的数据目录。这个data目录的所有者应该是postgres用户,权限应该是700,为了方便起见,还设置了postgresql二进制文件的路径。

sudo useradd postgres
sudo passwd postgres
sudo mkdir -p /pgdatabase/data
sudo chown -R postgres: /pgdatabase/data
sudo sh -c "echo 'export PATH=$PATH:/opt/PostgreSQL/bin' > /etc/profile.d/postgres.sh"
source /etc/profile.d/postgres.sh 

6.初始化Postgres数据库

现在,在使用任何 postgres 命令之前,以 postgres 用户身份使用以下命令初始化数据库。

su postgres
initdb -D /pgdatabase/data/ -U postgres -W

其中 -D 是该数据库集群的位置,或者我们可以说它是我们要初始化数据库集群的数据目录,-U 表示数据库超级用户名,-W 用于 db 超级用户的密码提示。

有关更多信息和选项,我们可以参考 initdb --help

7.启动PostgreSQL服务

初始化数据库后,启动数据库集群,或者如果需要更改服务器的端口或监听地址,编辑data目录下的/pgdatabase/data/postgresql.conf文件数据库服务器。

nano /pgdatabase/data/postgresql.conf

现在,启动 PostgreSQL 服务。

pg_ctl -D /pgdatabase/data/ start

启动数据库后,使用以下 ps 和 netstat 命令验证 postgres 服务器进程的状态。

ps -ef |grep -i postgres
netstat -apn |grep -i 51751

可以看到数据库集群运行良好,在启动数据库集群时可以在-l选项指定的位置找到启动日志。

pg_ctl -D /pgdatabase/data/ -l logfile start

8. 连接到 PostgreSQL

现在连接到数据库集群并使用以下命令创建数据库。

psql -p 5432
postgres=# create database test;
postgres=# \l to list all databases in cluster
postgres=# \q to quit form postgres console

如果您正在寻找名为 pgAdmin 的图形工具来管理您的 PostgreSQL,请按照这些指南在您的 Linux 发行版上安装 pgAdmin

结论

您已在 Linux 系统上从源代码成功安装了 PostgreSQL。此过程为您的 PostgreSQL 安装提供了灵活性和控制,允许您根据您的特定要求进行定制。