编译PG源代码和安装软件
我使用的是一台运行Ununtu 24.04的Linux服务器,为了编译PG源码,我需要提前把一些编译PG源代码所需要的软件包安装好,下面是我使用root用户运行的安装命令。注意:你需要以一个具有sudo权限的用户先执行“sudo su -”命令切换到root用户后,再运行这些命令。
apt update -y
apt upgrade -y
apt install apt-file -y
apt-file update -y
apt install bzip2 build-essential pkg-config -y
apt install libicu-dev flex bison -y
apt install libreadline-dev zlib1g-dev -y
apt install docbook-xml docbook-xsl -y
apt install libxml2-utils xsltproc fop -y
完成上述软件安装后,你切换到postgres用户,检查一下gcc和gmake是否安装成功,因为这些编译工具是编译PG源码所必须的。具体执行的命令和相关的输出内容如下:
postgres$ gcc --version
gcc (Ubuntu 13.3.0-6ubuntu2~24.04) 13.3.0
Copyright (C) 2023 Free Software Foundation, Inc.
......
postgres$ gmake --version
GNU Make 4.3
Built for x86_64-pc-linux-gnu
Copyright (C) 1988-2020 Free Software Foundation, Inc.
......
如果你的环境中出现类似“command not found”的错误,就说明gcc或者gmake没有安装好,你需要先解决这个问题, 再进行下面的安装步骤。
下一步的任务是下载并解压缩PG的源码压缩包。我们访问PG的官方网站( www.postgresql.org ),很容易找到下载(download) 的入口,注意要选择下载源码包,而不是 已经编译好的二进制软件包。例如我下载了文件postgresql-18.0.tar.bz2 或者postgresql-18.0.tar.gz,它们都是PG 18的源码包,只不过是压缩的格式不同而已。如果你使用一台可以联网的Linux服务器,可以直接在这台服务器上使用wget或者curl等常用的Linux下载工具下载PG的源码。请看下面的示例:
wget https://ftp.postgresql.org/pub/source/v18/postgresql-18.0.tar.bz2
curl -O https://ftp.postgresql.org/pub/source/v18/postgresql-18.0.tar.bz2
下载命令wget或者curl只要使用一个即可。假设我们以postgres用户执行上述下载命令,压缩包在/home/postgres目录下,我们可以执行如下命令进行解压缩:
postgres $ id
uid=1001(postgres) gid=1001(postgres) groups=1001(postgres),100(users),113(ssl-cert)
postgres $ pwd
/home/postgres
postgres $ ls -l
total 21796
-rw-rw-r-- 1 postgres postgres 22319023 Aug 5 17:15 postgresql-18.0.tar.bz2
postgres $ tar jxvf postgresql-18.0.tar.bz2
postgres $ ls -l
total 21800
drwxrwxr-x 7 postgres postgres 4096 Jul 14 20:12 postgresql-18.0
-rw-rw-r-- 1 postgres postgres 22319023 Aug 5 17:15 postgresql-18.0.tar.bz2
postgres@ip-172-31-29-179:~$ cd postgresql-18beta2/
postgres@ip-172-31-29-179:~/postgresql-18beta2$
我们看到有一个目录,这个就是源码压缩包解压缩后的全部源代码。下面我们就要进入到源代码目录,执行源代码的编译和软件安装的任务。在这个目录下,执行如下命令:
./configure --prefix=/home/postgres/pg18b2
make world
make install-world
其中第一步是配置,我们仅仅指定了prefix参数的值,它规定了编译好的PG软件会放在哪个目录中,我们在上面指定了/home/postgres/pg18b2这个目录。第二步的make world就是对一百多万行的PG源码进行编译,这一步耗时最长。第三步的make install-world命令就是把编译好的软件拷贝到你指定的目录,即/home/postgres/pg18b2这个目录。
如果你所有的操作都很顺利,就会看到最终的成果,如下所示:
postgres@ip-172-31-29-179:~$ pwd
/home/postgres
postgres@ip-172-31-29-179:~$ ls -l
total 21804
drwxrwxr-x 6 postgres postgres 4096 Aug 5 17:28 pg18b2
drwxrwxr-x 7 postgres postgres 4096 Aug 5 17:20 postgresql-18beta2
-rw-rw-r-- 1 postgres postgres 22319023 Aug 5 17:15 postgresql-18beta2.tar.bz2
postgres@ip-172-31-29-179:~$ ls -l pg18b2/
total 16
drwxrwxr-x 2 postgres postgres 4096 Aug 5 17:28 bin
drwxrwxr-x 6 postgres postgres 4096 Aug 5 17:28 include
drwxrwxr-x 4 postgres postgres 4096 Aug 5 17:28 lib
drwxrwxr-x 8 postgres postgres 4096 Aug 5 17:28 share