CentOS 7环境下PostgreSQL 13执行initdb初始化缺失libpq.so.5问题求助
问题原因
- 依赖包安装异常:postgresql13-server依赖的
postgresql13-libs包未正常安装、安装不完整或被其他包覆盖,该包是libpq.so.5文件的官方提供来源。 - 动态链接库配置缺失:即使
libpq.so.5存在于/usr/pgsql-13/lib路径下,系统动态链接配置未包含该路径,也会导致程序加载时找不到该文件。 - 系统环境冲突:旧版本PostgreSQL残留、第三方源的libpq相关包冲突、rpm数据库损坏或yum缓存损坏,都会导致共享文件缺失或不生效。
解决方案
- 检查并修复依赖包
首先验证postgresql13-libs是否正常安装:
rpm -qa | grep postgresql13-libs
如果无输出,直接安装依赖包:
sudo yum install -y postgresql13-libs
如果已安装,验证包文件完整性:
rpm -V postgresql13-libs
如果输出包含missing /usr/pgsql-13/lib/libpq.so.5类的报错,说明包文件损坏,执行重装:
sudo yum reinstall -y postgresql13-libs
- 排查冲突包
执行命令查看是否有其他源的libpq包冲突:
rpm -qa | grep libpq
如果存在非postgresql13-libs的其他libpq相关包,先卸载冲突包,再重新安装PostgreSQL 13依赖。
- 修复动态链接配置
首先全局搜索libpq.so.5是否存在于系统中:
sudo find / -name "libpq.so.5" 2>/dev/null
如果能找到文件(路径一般为/usr/pgsql-13/lib/libpq.so.5),将对应路径加入系统动态链接配置:
echo "/usr/pgsql-13/lib" | sudo tee /etc/ld.so.conf.d/pgsql13.conf # 刷新动态链接缓存 sudo ldconfig
配置完成后再测试初始化命令即可。
- 清理缓存重装
如果上述操作均无效,清理yum缓存后重装所有PostgreSQL 13相关包:
sudo yum clean all sudo rm -rf /var/cache/yum sudo yum remove -y postgresql13* sudo yum install -y postgresql13-server postgresql13-libs
- 临时方案(应急使用)
如果需要快速完成初始化,可以手动指定共享库路径执行命令:
sudo LD_LIBRARY_PATH=/usr/pgsql-13/lib /usr/pgsql-13/bin/postgresql-13-setup initdb
内容的提问来源于stack exchange,提问作者joe
相关产品推荐
相关产品推荐

