要构建PostgreSQL的RPM软件包
当在PostgreSQL的Yum存储库中发布新的次要版本时,旧版本将会被删除。因此,如果想要安装旧的次要版本,则必须自己构建RPM软件包。
下面是关于如何构建 PostgreSQL 的 RPM 软件包的步骤解释。
-
- 安装必要用于构建RPM软件包的软件包。
# yum -y install git rpm-build gcc bison flex perl-ExtUtils-Embed \
python-devel tcl-devel readline-devel zlib-devel openssl-devel \
krb5-devel e2fsprogs-devel libxml2-devel libxslt-devel pam-devel \
systemtap-sdt-devel libuuid-devel openldap-devel systemd-devel
(略)
完成
克隆用于构建与PostgreSQL相关的RPM软件包的Git存储库。
由于等待时间太长,所以我先克隆最新的提交,然后再获取剩余的。
# git clone –depth=1 https://git.postgresql.org/git/pgrpms.git
正在克隆到 ‘pgrpms’…
远程: 计数对象: 8801, 完成.
远程: 压缩对象: 100% (5324/5324), 完成.
远程: 总共 8801 (delta 3520),重用 5378 (delta 1723)
获取对象: 100% (8801/8801),51.55 MiB | 771.00 KiB/s, 完成.
处理 delta: 100% (3520/3520),完成。
# cd pgrpms
# git fetch –unshallow
远程: 计数对象: 67268, 完成.
远程: 压缩对象: 100% (33060/33060), 完成.
远程: 总共 67268 (delta 42052),重用 53885 (delta 30844)
获取对象: 100% (67268/67268),133.80 MiB | 661.00 KiB/s, 完成.
处理 delta: 100% (42052/42052),完成。
将检出RPM软件包构建时的提交版本。
没有特定的标签,所以只能通过查看日志来确定要检出哪个提交版本。如果日志中显示已更新到该版本,则该提交版本可能是正确的。在这里,我们决定构建9.6.3版本。
# git log –oneline | grep -F 9.6.3
eb2cbe0 PostgreSQL/9.6: Update to 9.6.3, switch to symlinks, and delete obsoleted patch from RHEL 6 directory.
# git checkout eb2cbe0
注意: 正通过’eb2cbe0’检出。
您现在处于’分离头状态’。您可以浏览,进行实验性更改并提交,也可以通过再次进行检出而不会影响任何分支来丢弃在此状态下进行的任何提交。
如果您要创建新分支以保留您创建的提交,可以使用检出命令再次进行创建(现在或将来)。示例:
git checkout -b 新的分支名
HEAD 现在位于 eb2cbe0… PostgreSQL/9.6: Update to 9.6.3, switch to symlinks, and delete obsoleted patch from RHEL 6 directory。
移动到包含构建RPM软件包所需文件的目录,并下载未包含在Git存储库中的文件。
需要下载的文件是PostgreSQL的源代码和PDF格式的手册。
# cd rpm/redhat/9.6/postgresql/EL-7
# curl -Os https://download.postgresql.org/pub/source/v9.6.3/postgresql-9.6.3.tar.bz2
# curl -Os https://www.postgresql.org/files/documentation/pdf/9.6/postgresql-9.6-A4.pdf
最后进行RPM软件包构建。
如果在spec文件中出现错误,那么很可能已经在最新的提交版本中进行了修复,所以可以继续前进,并重新进行构建。
# rpmbuild -ba -D “_sourcedir $(pwd)” -D “dist .rhel7” postgresql-9.6.spec
(略)
+ exit 0
构建完成后,RPM软件包已准备好。
# ls ~/rpmbuild/RPMS/x86_64
postgresql96-9.6.3-1PGDG.rhel7.x86_64.rpm
postgresql96-contrib-9.6.3-1PGDG.rhel7.x86_64.rpm
postgresql96-debuginfo-9.6.3-1PGDG.rhel7.x86_64.rpm
postgresql96-devel-9.6.3-1PGDG.rhel7.x86_64.rpm
postgresql96-docs-9.6.3-1PGDG.rhel7.x86_64.rpm
postgresql96-libs-9.6.3-1PGDG.rhel7.x86_64.rpm
postgresql96-plperl-9.6.3-1PGDG.rhel7.x86_64.rpm
postgresql96-plpython-9.6.3-1PGDG.rhel7.x86_64.rpm
postgresql96-pltcl-9.6.3-1PGDG.rhel7.x86_64.rpm
postgresql96-server-9.6.3-1PGDG.rhel7.x86_64.rpm
postgresql96-test-9.6.3-1PGDG.rhel7.x86_64.rpm