麒麟OS部署PostgreSQL常见问题源于路径不规范、缺专用用户或开发包,应按yum在线安装(推荐初学者)、源码编译(适配ARM64)、docker容器化三步解决。

如果您在银河麒麟操作系统上部署PostgreSQL数据库时遇到依赖缺失、用户权限错误或编译失败等问题,则很可能是由于安装路径不规范、未创建专用系统用户或缺少关键开发包所致。以下是解决此问题的步骤:
一、使用YUM在线安装(推荐初学者)
该方法适用于银河麒麟V10/V11服务器版,系统已配置有效软件源且网络连通,可自动解决依赖关系并完成服务注册。
1、以root身份执行系统更新,确保基础环境最新:sudo yum update -y
2、安装PostgreSQL主程序及扩展组件:sudo yum install -y postgresql-server postgresql-contrib
3、初始化数据库集群目录:sudo postgresql-setup --initdb
4、启动服务并设置开机自启:sudo systemctl start postgresql;sudo systemctl enable postgresql
5、验证服务状态与版本:sudo systemctl status postgresql;psql --version
二、源码编译安装(适配ARM64等非标架构)
当YUM无法匹配目标版本(如PostgreSQL 17/18),或系统为ARM64架构导致预编译包不兼容时,需通过源码编译安装,可精确控制依赖与安装路径。
1、下载对应版本源码包(以v18.1为例):wget https://ftp.postgresql.org/pub/source/v18.1/postgresql-18.1.tar.gz
2、解压并进入源码目录:tar -zxvf postgresql-18.1.tar.gz;cd postgresql-18.1
3、安装编译依赖:sudo yum install -y gcc gcc-c++ zlib-devel readline-devel openssl-devel
4、创建postgres用户与组:sudo groupadd postgres;sudo useradd -g postgres postgres;sudo passwd postgres
5、配置编译参数并安装:./configure --prefix=/usr/local/pgsql --with-openssl;make;sudo make install
6、创建数据目录并赋权:sudo mkdir -p /usr/local/pgsql/data;sudo chown -R postgres:postgres /usr/local/pgsql/data
7、切换用户并初始化数据库:sudo -i -u postgres /usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data
三、Docker容器化安装(支持离线与ARM环境)
该方式规避系统级依赖冲突,适用于内网隔离、快速验证及ARM64平台部署,镜像可预先导入并复用。
1、导入PostgreSQL Docker镜像(需提前获取arm64或x86_64适配镜像):docker load
2、创建持久化数据目录:mkdir -p /opt/docker/postgresql/data
3、运行容器并挂载数据卷与环境变量:docker run -d --name pgsql -e POSTGRES_PASSWORD=kylin123 -v /opt/docker/postgresql/data:/var/lib/postgresql/data -p 5432:5432 -d postgres:14
4、验证容器运行状态:docker ps | grep pgsql
5、进入容器执行连接测试:docker exec -it pgsql psql -U postgres -c "SELECT version();"
四、本地YUM源配置(解决离线或源不可达场景)
当系统无法访问公网软件源时,可通过挂载麒麟安装镜像构建本地仓库,保障依赖包完整可用。
1、挂载麒麟系统安装镜像(ISO或光盘):mount /dev/cdrom /mnt(若设备为/dev/sr0则替换对应路径)
2、创建本地源配置文件:nano /etc/yum.repos.d/kylin_local.repo
3、写入本地源定义:[kylin_local]\nname = kylin local\nbaseurl = file:///mnt\ngpgcheck = 0\nenabled = 1
4、重建YUM缓存:yum clean all && yum makecache
5、确认源已启用:yum repolist | grep kylin_local
五、readline-devel依赖报错专项处理
源码编译过程中常见“readline library not found”错误,本质是GNU Readline开发头文件缺失,需显式安装或屏蔽交互式功能。
1、强制安装readline开发包:sudo yum install -y readline-devel
2、若仍报错且无需psql命令行增强功能,可在configure阶段禁用:./configure --prefix=/usr/local/pgsql --without-readline
3、验证readline头文件是否存在:rpm -ql readline-devel | grep include
4、手动指定readline路径(如自定义安装):./configure --prefix=/usr/local/pgsql --with-readline=/usr/include/readline

















