我正在尝试在Debian上运行的PostgreSQL 9.0.4服务器上执行pg_dump
,我收到以下错误:
./pg_dump: error while loading shared libraries: libpq.so.5: cannot open shared object file: No such file or directory
libpq.so.5
是指向libpq.so.5.3
的链接,如下所示
lrwxrwxrwx 1 root root 12 Jun 27 16:24 libpq.so.5 -> libpq.so.5.3
-rwxr-xr-x 1 root root 180749 Jun 21 02:43 libpq.so.5.3
我做错了什么?
答案 0 :(得分:19)
试试这个:
1:了解libpq.so.5
find / -name libpq.so.5
输出示例:
/usr/pgsql-9.4/lib/libpq.so.5
如果一无所获,请检查您是否已经为postgresql版本和操作系统平台安装了合适的postgresql-libs
2:#34;众所周知的"中的库的符号链接库路径如/usr/lib
:
ln -s /usr/pgsql-9.4/lib/libpq.so.5 /usr/lib/libpq.so.5
注意: 如果您的平台是64位,那么您还必须符号链接到64位库路径:
ln -s /usr/pgsql-9.4/lib/libpq.so.5 /usr/lib64/libpq.so.5
3:快乐!
答案 1 :(得分:7)
这些libpq
文件位于哪个目录中?您可以尝试将环境变量LD_LIBRARY_PATH
设置为指向此目录,或确保它位于标准位置。
另外,为什么“{1}}链接显示在”如下所示“部分中?也许你应该运行libpq.so.5
?
答案 2 :(得分:5)
我在RHEL 6.5上的Postgres 9.5上收到了相同的错误消息,这引出了我的帖子。但是文件libpq.so.5
的查找没有返回任何内容,这让事情变得更加混乱。
最后,以下符号链接使其运行
ln -s /opt/rh/rh-postgresql95/root/usr/lib64/libpq.so.rh-postgresql95-5 /usr/lib64/libpq.so.rh-postgresql95-5
ln -s /opt/rh/rh-postgresql95/root/usr/lib64/libpq.so.rh-postgresql95-5 /usr/lib/libpq.so.rh-postgresql95-5
这些路径适用于RHEL,使用find / -name libpq.so
定位您的安装,并使用原始文件名将其添加到相同的目标文件夹/usr/lib/
和/usr/lib64/
。
根本原因显示安装未将此文件放入共享位置。
答案 3 :(得分:1)
可能由于未设置$LD_LIBRARY_PATH
环境变量而导致此错误。
使用前缀(./configure --prefix=/some/path
)从源代码安装应用程序时,必须告知lib/
路径在哪里。我刚刚找到一个solution for this,并将此变量添加到postgres用户init bash脚本中:
printf 'export PATH=$PATH:/opt/apl/pgsql/bin\nexport LD_LIBRARY_PATH=/opt/apl/pgsql/lib:$LD_LIBRARY_PATH\n' > /etc/profile.d/postgres.sh
答案 4 :(得分:1)
redhat 7在安装yum install pgadmin4
之后缺少一些步骤:
sudo ln -s /usr/lib64/pgdg-libpq5/lib/libpq.so /usr/lib64/libpq.so.5
sudo ln -s /usr/lib64/pgdg-libpq5/lib/libpq.so /usr/lib/libpq.so.5
sudo chown -R apache:apache /var/lib/pgadmin4/
然后您可以运行
sudo python3 /usr/lib/python3.6/site-packages/pgadmin4-web/setup.py
,如果一切成功:
systemctl start httpd
systemctl status httpd
apachectl configtest
并确保httpd可以正常启动
答案 5 :(得分:-1)
我在pg 9.6安装时遇到了完全相同的问题。我这样修好了。相当令人恼火的是,安装人员并未考虑到这一点。
***********post yum install & running initdb *********
Success. You can now start the database server using:
/opt/rh/rh-postgresql96/root/usr/bin/pg_ctl -D /var/opt/rh/rh-postgresql96/lib/pgsql/data -l logfile start
-bash-4.2$ /opt/rh/rh-postgresql96/root/usr/bin/pg_ctl -D /var/opt/rh/rh-postgresql96/lib/pgsql/data -l logfile start
/opt/rh/rh-postgresql96/root/usr/bin/pg_ctl: **error while loading shared libraries: libpq.so.rh-postgresql96-5: cannot open shared object file: No such file or directory**
-bash-4.2$ id
uid=26(postgres) gid=26(postgres) groups=26(postgres) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
**************
-bash-4.2$ cat LibFix
ln -s /opt/rh/rh-postgresql96/root/usr/lib64/libpq.so.rh-postgresql96-5 /usr/lib64/libpq.so.rh-postgresql96-5
ln -s /opt/rh/rh-postgresql96/root/usr/lib64/libpq.so.rh-postgresql96-5 /usr/lib/libpq.so.rh-postgresql96-5
**************
[root@****lab ~]# ln -s /opt/rh/rh-postgresql96/root/usr/lib64/libpq.so.rh-postgresql96-5 /usr/lib64/libpq.so.rh-postgresql96-5
[root@****lab ~]# ln -s /opt/rh/rh-postgresql96/root/usr/lib64/libpq.so.rh-postgresql96-5 /usr/lib/libpq.so.rh-postgresql96-5
[root@****lab ~]# su - postgres
Last login: Thu Apr 5 08:57:21 CEST 2018 on pts/0
-bash-4.2$ /opt/rh/rh-postgresql96/root/usr/bin/pg_ctl -D /var/opt/rh/rh-postgresql96/lib/pgsql/data -l logfile start
server starting
-bash-4.2$ ps -ef | grep postgres
root 12778 7883 0 09:07 pts/0 00:00:00 su - postgres
postgres 12779 12778 0 09:07 pts/0 00:00:00 -bash
postgres 12802 1 0 09:08 pts/0 00:00:00 /opt/rh/rh-postgresql96/root/usr/bin/postgres -D /var/opt/rh/rh-postgresql96/lib/pgsql/data
postgres 12803 12802 0 09:08 ? 00:00:00 postgres: logger process
postgres 12805 12802 0 09:08 ? 00:00:00 postgres: checkpointer process
postgres 12806 12802 0 09:08 ? 00:00:00 postgres: writer process
postgres 12807 12802 0 09:08 ? 00:00:00 postgres: wal writer process
postgres 12808 12802 0 09:08 ? 00:00:00 postgres: autovacuum launcher process
postgres 12809 12802 0 09:08 ? 00:00:00 postgres: stats collector process
postgres 12810 12779 0 09:08 pts/0 00:00:00 ps -ef
-bash-4.2$ id
uid=26(postgres) gid=26(postgres) groups=26(postgres) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
-bash-4.2$ psql
psql (9.6.5)
postgres=# \conninfo
You are connected to database "postgres" as user "postgres" via socket in "/var/run/postgresql" at port "5432".