在银河麒麟系统安装PostgreSQL需按V10/V11版本、网络状况、CPU架构(x86_64/aarch64)及目标版本(v15/v17/v18)选择YUM在线安装、源码编译或Docker部署;直接套用CentOS/Ubuntu命令会导致包名不匹配、权限拒绝或服务启动失败。

在银河麒麟操作系统上安装PostgreSQL,需根据当前系统版本(V10/V11)、网络连通性、CPU架构(x86_64或aarch64)及目标版本(如v15/v17/v18)选择对应路径;直接套用CentOS或Ubuntu命令会导致readline-devel包名不匹配、initdb权限拒绝或服务启动失败。
YUM在线安装(适用于V10/V11服务器版且网络通畅)
该方式由系统自动解析依赖、注册systemd服务、生成默认数据目录,适合快速验证或初学者部署。
第一步:以root身份更新系统基础组件,避免因glibc或openssl版本过旧引发后续安装中断:
sudo yum update -y
第二步:安装主服务与扩展模块,注意包名不含版本后缀(如postgresql-server而非postgresql15-server):
sudo yum install -y postgresql-server postgresql-contrib
第三步:初始化数据库集群目录——【此步不可跳过,V10/V11均需显式执行,否则systemctl start会报“data directory not found”】
sudo postgresql-setup --initdb
第四步:启动服务并设为开机自启:
sudo systemctl start postgresql → sudo systemctl enable postgresql
第五步:验证服务状态与客户端版本是否匹配:
sudo systemctl status postgresql | grep "active (running)" && psql --version
源码编译安装(适配ARM64架构或指定高版本如v17/v18)
当YUM仓库中无目标版本、系统为aarch64架构、或内网完全离线时必须使用此方式。它绕过预编译包限制,但需手动创建用户、处理国产化依赖包名差异。
方法一:准备构建环境
先创建专用系统用户与组,避免后续initdb因权限不足失败:
sudo groupadd postgres → sudo useradd -g postgres postgres
方法二:安装编译依赖(关键适配点)
执行sudo yum install -y gcc gcc-c++ zlib-devel openssl-devel libxml2-devel python3-devel;若提示readline-devel未找到,【请改用kylin-readline-devel,该包位于麒麟V10/V11 ISO镜像的“Addons”源中,需挂载后启用】
方法三:下载、配置与安装
下载v18.1源码:wget https://ftp.postgresql.org/pub/source/v18.1/postgresql-18.1.tar.gz
解压并进入:tar -zxvf postgresql-18.1.tar.gz → cd postgresql-18.1
配置安装路径并禁用readline(ARM64平台必选):./configure --prefix=/usr/local/pgsql --with-openssl --without-readline
编译安装:make -j$(nproc) → sudo make install
方法四:初始化数据目录
创建目录并赋权:sudo mkdir -p /usr/local/pgsql/data → sudo chown -R postgres:postgres /usr/local/pgsql/data
切换用户执行初始化:sudo -i -u postgres /usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data
Docker容器化部署(适用于离线环境或多版本测试)
该方式完全规避系统级依赖冲突,特别适合政企内网隔离场景或需要同时运行多个PostgreSQL版本的开发测试环境。
第一步:导入适配镜像(提前在联网机获取)
若系统为aarch64架构,必须使用arm64架构镜像:
docker load
第二步:创建持久化数据目录
mkdir -p /opt/docker/postgresql/data
第三步:运行容器并挂载数据与端口
docker run -d \
--name pg18 \
-e POSTGRES_PASSWORD=your_secure_password \
-v /opt/docker/postgresql/data:/var/lib/postgresql/data \
-p 5432:5432 \
-d postgres:18.1-alpine

















