麒麟os安装postgresql推荐yum在线安装(适用于v10/v11服务器版且网络连通),需先更新系统、安装postgresql-server及contrib包、初始化数据库、启动并设为开机自启;若遇依赖缺失或arm64架构不兼容,则改用源码编译安装,注意处理readline-devel等包名差异并创建postgres用户;docker部署适用于隔离测试场景。

如果您在麒麟操作系统上尝试安装PostgreSQL数据库但遭遇依赖缺失、服务启动失败或初始化报错等问题,则很可能是由于软件源配置不全、未创建专用系统用户、缺少关键开发包(如readline-devel、openssl-devel)或架构适配不当所致。以下是解决此问题的步骤:
一、使用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 | grep "active (running)"
psql --version
二、源码编译安装(适配ARM64/x86_64多架构)
当目标环境为离线状态、需指定PostgreSQL 17/18等新版、或CPU架构为aarch64导致预编译包不兼容时,应采用源码方式安装,可精确控制安装路径、启用/禁用模块及优化参数。
1、下载对应版本源码包(以v17.0为例):
wget https://ftp.postgresql.org/pub/source/v17.0/postgresql-17.0.tar.bz2
2、解压并进入源码目录:
tar -xjvf postgresql-17.0.tar.bz2
cd postgresql-17.0
3、安装必需编译依赖(含readline-devel专项处理):
sudo yum install -y gcc gcc-c++ zlib-devel openssl-devel cmake
若提示readline-devel未找到,请改用kylin-readline-devel或从ISO镜像挂载源中安装
4、创建专用postgres用户与组:
sudo groupadd postgres
sudo useradd -g postgres postgres
sudo passwd postgres
5、配置编译参数并执行安装(指定安装路径并禁用冲突模块):
./configure --prefix=/usr/local/pgsql --with-openssl --without-readline
make -j$(nproc)
sudo make install
6、创建数据目录并授权:
sudo mkdir -p /usr/local/pgsql/data
sudo chown -R postgres:postgres /usr/local/pgsql/data
7、切换至postgres用户并初始化数据库:
sudo -i -u postgres /usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data
三、Docker容器化部署(免宿主机污染)
该方式适用于测试验证、CI/CD流水线或需在同一主机运行多个PostgreSQL版本的场景,完全隔离运行时环境,避免与系统级包管理器产生冲突。
1、确认Docker已就绪并运行:
sudo systemctl is-active docker
PostgreSQL 18.4 官方 Ubuntu 安装包现已发布,这是目前最新的稳定版本。推荐通过官方 APT 仓库安装:先执行 sudo apt update 更新索引,再运行 sudo apt install postgresql-18 即可完成部署。新版本引入了异步 I/O 子系统,在顺序扫描与 VACUUM 场景下性能提升显著,同时支持 UUID v7 原生生成函数与虚拟生成列。
2、加载离线PostgreSQL镜像(如已获取arm64适配镜像):
docker load
3、运行容器并挂载外部数据卷:
docker run -d \
--name pg17 \
-e POSTGRES_PASSWORD=kylin2026 \
-v /opt/pgdata:/var/lib/postgresql/data \
-p 5432:5432 \
--restart unless-stopped \
postgresql:17-alpine
4、验证容器内服务状态:
docker exec -it pg17 psql -U postgres -c "SELECT version();"
四、APT包管理器安装(银河麒麟基于Ubuntu LTS版本)
针对桌面版或部分社区版银河麒麟(如Kylin Desktop V10),其底层为Ubuntu LTS,应优先使用APT而非YUM,否则将因包名映射错误导致安装失败。
1、更新APT软件包索引:
sudo apt update
2、安装核心服务与扩展模块:
sudo apt install -y postgresql postgresql-contrib
3、启动并启用服务:
sudo systemctl start postgresql
sudo systemctl enable postgresql
4、切换至postgres用户并登录验证:
sudo -u postgres psql -c "\conninfo"
注意:APT安装后默认监听地址为localhost,如需远程访问,必须手动修改postgresql.conf和pg_hba.conf
五、离线依赖包批量安装(无网络生产环境)
在完全断网的政企级生产环境中,需预先在同版本麒麟系统上导出完整依赖树,并打包部署至目标节点,通过本地YUM仓库实现闭环安装。
1、在联网环境生成依赖清单:
repoquery --requires --recursive --resolve postgresql17-server | sort -u > pg17-deps.list
2、下载所有依赖RPM包:
yum install --downloadonly --downloaddir=./pg17-rpms @$(cat pg17-deps.list)
3、将pg17-rpms目录整体拷贝至离线主机并构建本地仓库:
sudo createrepo /path/to/pg17-rpms
4、配置本地repo文件:
sudo tee /etc/yum.repos.d/offline-pg.repo
[offline-pg]
name=Offline PostgreSQL Repo
baseurl=file:///path/to/pg17-rpms
enabled=1
gpgcheck=0
EOF
5、执行离线安装:
sudo yum --disablerepo="*" --enablerepo="offline-pg" install -y postgresql17-server postgresql17-contrib
关键提示:安装后必须手动执行postgresql17-setup --initdb,且服务单元名称为postgresql-17而非postgresql










