国产麒麟系统 aarch64 架构 PostgreSQL 15 源码编译安装完整教程

在 Kylin 10 aarch64 架构系统中,由于默认 yum 仓库可能缺少适配的 PostgreSQL 15 相关包,直接通过包管理安装会出现 "No match for argument" 错误。此时,源码编译安装是绕过系统源限制、实现兼容安装的可靠方案。本教程将详细介绍从准备工作到最终使用的完整流程。

一、前期准备:卸载旧版本 PostgreSQL(可选)

若系统中已安装低版本 PostgreSQL(如 10.x),需先停止服务并卸载,避免版本冲突。

bash 复制代码
# 停止旧版本 PostgreSQL 服务
sudo systemctl stop postgresql-10
# 禁止旧版本服务开机自启
sudo systemctl disable postgresql-10

# 卸载旧版本相关包
sudo yum remove -y postgresql-server postgresql postgresql-libs

执行完成后,可通过 rpm -qa | grep postgresql 验证旧版本是否已完全卸载,无输出则表示卸载成功。

二、源码编译安装 PostgreSQL 15 核心步骤

本章节将从依赖安装到编译安装,逐步实现 PostgreSQL 15 的部署,适配 aarch64 架构特性。

1. 安装编译必需依赖

PostgreSQL 编译需要依赖编译器、开发库等工具,通过 yum 安装以下基础依赖包:

bash 复制代码
sudo yum install -y gcc make readline-devel zlib-devel openssl-devel libxml2-devel libxslt-devel perl-ExtUtils-Embed

若安装过程中提示缺失其他依赖,可根据系统提示补充安装,确保编译环境完整。

2. 下载 PostgreSQL 15 源码包

选择 PostgreSQL 15 最新稳定版(本教程以 15.13 为例,适配 aarch64 架构),通过官方源下载:

bash 复制代码
# 下载源码包(若 wget 未安装,先执行 sudo yum install -y wget)
wget https://ftp.postgresql.org/pub/source/v15.13/postgresql-15.13.tar.bz2

# 解压源码包
tar -jxvf postgresql-15.13.tar.bz2

# 进入源码目录
cd postgresql-15.13

3. 配置编译参数(适配 aarch64 架构)

通过 ./configure 命令配置编译选项,明确安装路径和架构适配:

bash 复制代码
./configure \
  --prefix=/usr/local/pgsql15 \          # 指定安装路径,可自定义(如 /opt/pgsql15)
  --host=aarch64-linux-gnu \             # 强制适配 aarch64 架构
  --with-openssl \                       # 启用 SSL 加密功能
  --with-libxml \                        # 启用 XML 扩展支持
  --with-libxslt                         # 启用 XSLT 扩展支持

配置过程中若出现报错,通常是依赖缺失导致,需根据报错信息补充安装对应依赖包。

4. 多线程编译与安装

使用 make 命令编译源码,-j 参数可指定线程数(建议设为 CPU 核心数,加速编译):

bash 复制代码
# 编译(4 核 CPU 示例,根据实际核心数调整 -j 后的数字)
make -j4

# 安装到指定路径
sudo make install

编译和安装过程耗时根据服务器性能而定,耐心等待至执行完成,无报错则表示编译安装成功。

三、数据库初始化与系统服务配置

安装完成后,需初始化数据库实例并配置系统服务,实现便捷的启停管理。

1. 创建用户与数据目录

PostgreSQL 建议使用非 root 用户运行,创建 postgres 用户及数据目录:

bash 复制代码
# 创建 postgres 用户(若已存在,会提示"用户已存在",可忽略)
sudo useradd -m postgres

# 创建数据存储目录(默认路径,可自定义)
sudo mkdir -p /var/lib/pgsql/15/data

# 设置目录权限(确保 postgres 用户拥有完全控制权)
sudo chown -R postgres:postgres /var/lib/pgsql/15
sudo chmod 700 /var/lib/pgsql/15/data  # 限制仅所有者可访问

2. 初始化数据库实例

切换到 postgres 用户,执行初始化命令:

bash 复制代码
# 切换用户并初始化数据库
sudo -u postgres /usr/local/pgsql15/bin/initdb -D /var/lib/pgsql/15/data

初始化成功后,会提示"Success. You can now start the database server using...",表示数据库实例已创建。

3. 配置 systemd 系统服务

为方便管理 PostgreSQL 服务,创建 systemd 服务文件:

bash 复制代码
# 创建服务文件
sudo vim /etc/systemd/system/postgresql-15.service

在打开的文件中粘贴以下内容(注意路径需与安装路径、数据目录一致):

bash 复制代码
[Unit]
Description=PostgreSQL 15 database server
After=network.target  # 网络服务启动后再启动 PostgreSQL

[Service]
Type=forking  # 后台运行模式
User=postgres  # 运行用户
Group=postgres  # 运行用户组
Environment=PGDATA=/var/lib/pgsql/15/data  # 数据目录路径
ExecStart=/usr/local/pgsql15/bin/pg_ctl start -D ${PGDATA} -s -o "-p 5432"  # 启动命令(默认端口 5432)
ExecStop=/usr/local/pgsql15/bin/pg_ctl stop -D ${PGDATA} -s -m fast  # 停止命令
ExecReload=/usr/local/pgsql15/bin/pg_ctl reload -D ${PGDATA} -s  # 重载配置命令
TimeoutSec=300  # 超时时间

[Install]
WantedBy=multi-user.target  # 多用户模式下启用

保存并退出文件后,刷新 systemd 配置:

bash 复制代码
sudo systemctl daemon-reload

4. 启动服务并设置开机自启

bash 复制代码
# 启动 PostgreSQL 15 服务
sudo systemctl start postgresql-15

# 设置开机自启
sudo systemctl enable postgresql-15

# 查看服务运行状态
sudo systemctl status postgresql-15

若状态显示"active (running)",则表示服务启动成功。

四、安装验证与功能测试

通过以下命令验证 PostgreSQL 15 是否安装成功并正常运行:

bash 复制代码
# 查看客户端工具版本
/usr/local/pgsql15/bin/psql --version

# 查看服务器版本(需服务已启动)
sudo -u postgres /usr/local/pgsql15/bin/psql -c "SELECT version();"

若输出结果中包含"PostgreSQL 15.13"(或对应安装的版本号),则表示安装验证通过。

五、使用 pg_dump 备份远程数据库

安装完成后,pg_dump 工具位于 /usr/local/pgsql15/bin/ 目录下,可用于备份远程 PostgreSQL 数据库(如 192.168.10.5:54321 上的 opengis 数据库):

bash 复制代码
/usr/local/pgsql15/bin/pg_dump -h 192.168.10.5 -p 54321 -U postgres -d opengis > opengis_backup_20251104.sql

执行命令后,输入远程数据库 postgres 用户的密码,即可将数据库备份为 SQL 文件(备份文件保存在当前执行命令的目录下)。

六、常见问题与注意事项

  • 依赖缺失报错 :编译过程中若提示"缺少 xxx 库",需通过 yum search xxx 查找对应依赖包并安装。
  • 服务启动失败 :检查数据目录权限是否正确(必须归 postgres 用户所有),或通过 journalctl -u postgresql-15 查看详细报错日志。
  • 端口冲突 :若 5432 端口已被占用,需修改服务文件中 ExecStart 后的 -p 5432 为其他空闲端口(如 5433)。

通过以上步骤,即可在 Kylin 10 aarch64 架构系统中成功安装并使用 PostgreSQL 15,满足高版本数据库的使用需求。

相关推荐
GalaxyPokemon6 小时前
PlayerFeedback 插件开发日志
java·服务器·前端
苏三说技术7 小时前
聊聊防御式编程
后端
IT_陈寒7 小时前
SpringBoot 3.2新特性实战:这5个隐藏功能让开发效率翻倍🚀
前端·人工智能·后端
IT_陈寒7 小时前
Vue3性能优化实战:这5个技巧让我的应用加载速度提升70% 🚀
前端·人工智能·后端
天天摸鱼的java工程师7 小时前
别再写那些重复代码了!8年Java老兵教你用 Hutool 提升开发效率
java·后端
喝杯绿茶7 小时前
springboot中的事务
java·spring boot·后端
昨天的猫7 小时前
原来项目中的观察者模式是这样玩的
后端·设计模式
麦兜*7 小时前
多阶段构建:打造最小化的 Spring Boot Docker 镜像
java·spring boot·后端·spring cloud·docker
RustCoder7 小时前
Rust 1.91 发布:ARM Windows 正式跻身顶级支持,悬空指针警告上线
后端·性能优化·rust