国产麒麟系统 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,满足高版本数据库的使用需求。

相关推荐
索荣荣2 分钟前
Maven配置文件(pom.xml)终极指南
java·开发语言
代码栈上的思考16 分钟前
SpringBoot 拦截器
java·spring boot·spring
送秋三十五20 分钟前
一次大文件处理性能优化实录————Java 优化过程
java·开发语言·性能优化
雨中飘荡的记忆22 分钟前
千万级数据秒级对账!银行日终批处理对账系统从理论到实战
java
jbtianci28 分钟前
Spring Boot管理用户数据
java·spring boot·后端
Sylvia-girl31 分钟前
线程池~~
java·开发语言
魔力军35 分钟前
Rust学习Day3: 3个小demo实现
java·学习·rust
时艰.39 分钟前
java性能调优 — 高并发缓存一致性
java·开发语言·缓存
落花流水 丶39 分钟前
Java 多线程完全指南
java
那我掉的头发算什么43 分钟前
【Mybatis】Mybatis-plus使用介绍
服务器·数据库·后端·spring·mybatis