1. 环境准备:为编译铺平道路
在银河麒麟v10 SP2上从源码编译安装PostgreSQL,听起来可能有点硬核,但只要你跟着步骤来,其实就像搭积木一样,一块一块放稳了,最后就能得到一个完全由你掌控的数据库大厦。我之所以喜欢源码安装,是因为它能让我根据服务器的硬件配置(比如CPU核心数、内存大小)进行深度优化,获得比直接安装二进制包更好的性能,尤其是在国产化环境里,这种“量身定制”的感觉很重要。当然,前提是你得先把“地基”打好,也就是准备好编译环境。这一步如果偷懒,后面编译的时候各种报错能让你怀疑人生。所以,咱们先别急着下载代码,花点时间把准备工作做扎实。
1.1 配置本地Yum源:解决依赖安装的“水源”问题
银河麒麟系统默认的在线软件源有时候可能因为网络或者镜像同步问题,导致安装依赖包速度慢甚至失败。最稳妥的方法,就是使用系统安装镜像作为本地源。这相当于在你自家后院挖了一口井,用水(安装软件)再也不求人了。我实测下来,这个方法在离线环境或者内网环境中尤其好用。
首先,你得找到你的系统安装镜像。通常,如果你是物理机安装,会有对应的光盘;如果是虚拟机,会有.iso镜像文件。这里我们假设你已经将镜像文件挂载好了。如果还没挂载,可以插入光盘,或者将ISO文件上传到服务器。挂载的命令很简单:
mount /dev/cdrom /mnt
如果 /dev/cdrom 不存在,你可以通过 lsblk 命令查看你的光盘设备名,也可能是 /dev/sr0。挂载成功后,/mnt 目录下就是镜像里的所有文件了。
接下来,我们要告诉系统的包管理器yum,这个 /mnt 目录是一个新的软件源。你需要创建一个新的repo文件:
nano /etc/yum.repos.d/kylin_local.repo
用 nano 或者 vi 编辑器都可以。在这个新文件里,写入以下内容:
[kylin_local]
name = kylin local
baseurl = file:///mnt
gpgcheck = 0
enabled = 1
我来解释一下这几个参数:
[kylin_local]:这是软件源的ID,可以自定义,但不要和已有的重复。name:一个描述性的名字。baseurl:最关键的一行,指向我们刚才挂载的本地目录。file://是文件协议。gpgcheck=0:表示不进行GPG签名检查。因为是我们自己的本地镜像,可以跳过这一步以简化流程。enabled=1:启用这个源。
保存退出后,运行 yum clean all 清除缓存,再运行 yum makecache 建立新的元数据缓存。你可以用 yum repolist 命令检查一下,看看 kylin_local 这个源是否在列表中并且已启用。有了这个本地源,后续安装编译依赖就会非常顺畅,速度飞快。
1.2 安装核心编译依赖:给PostgreSQL配上“左膀右臂”
PostgreSQL的源码编译,依赖于一些基础的开发库。其中最重要的两个就是 readline-devel 和 zlib-devel。为什么是它们?
- readline-devel:这个库提供了命令行编辑和历史记录功能。安装了它,你在
psql(PostgreSQL的交互式终端)里才能用上下箭头翻看之前输入的命令,才能进行命令行编辑。没有它,psql用起来会非常别扭,像回到了上古时代。 - zlib-devel:这是用于数据压缩的库。PostgreSQL在备份、存储一些大型数据时,可能会用到压缩功能。虽然编译时没有它可能也能通过,但为了功能的完整性,最好一并装上。
安装命令非常简单,得益于我们已经配置好了本地源:
yum install readline-devel zlib-devel -y
一条命令就把两个都装了。-y 参数表示自动确认安装,省去手动输入“y”的步骤。除了这两个,还有一些其他常用的开发工具链,比如 gcc、make,通常系统已经自带了,但为了保险起见,你可以用 yum groupinstall "Development Tools" -y 来安装一整套开发工具。不过,在干净的银河麒麟系统上,我一般会再检查一下以下几个包:
yum install gcc-c++ flex bison perl-IPC-Run -y
这些不是强制必需的,但能避免一些潜在的、稀奇古怪的编译警告或错误。特别是 gcc-c++,有些底层组件可能会用到C+


1万+

被折叠的 条评论
为什么被折叠?



