加载共享库时出错:libpq.so.5:无法打开共享对象文件:没有这样的文件或目录

McK*_*bet 21 postgresql debian

我试图pg_dump在Debian上运行的PostgreSQL 9.0.4服务器上执行,我收到以下错误:

./pg_dump: error while loading shared libraries: libpq.so.5: cannot open shared object file: No such file or directory 
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

我做错了什么?

Yah*_*oui 22

试试这个:

1:了解路径 libpq.so.5

find / -name libpq.so.5
Run Code Online (Sandbox Code Playgroud)

输出示例: /usr/pgsql-9.4/lib/libpq.so.5 如果一无所获,请检查您是否已经为postgresql版本和OS平台安装了合适的postgresql-libs

2:"知名"库路径中的库的符号链接,如/usr/lib:

ln -s /usr/pgsql-9.4/lib/libpq.so.5 /usr/lib/libpq.so.5
Run Code Online (Sandbox Code Playgroud)

注意:如果您的平台是64位,您还必须符号链接到64位库路径:

ln -s /usr/pgsql-9.4/lib/libpq.so.5 /usr/lib64/libpq.so.5
Run Code Online (Sandbox Code Playgroud)

3:快乐!


jmu*_*sch 17

基于 Debian 的 Linux 发行版

因为这是该错误的顶部搜索结果。我将添加更新的答案。我在尝试启动 django 服务器时收到错误。

我没有安装 postgres 的东西。

尝试:

sudo apt install libpq-dev

# or
sudo apt install libpq5
Run Code Online (Sandbox Code Playgroud)

看:

解释

缺少libpq依赖项很可能是由于psycopg2通过安装pip而不是apt. 因此,为了避免基于 Debian 的发行版(例如 Ubuntu 和 Raspberry Pi OS)出现任何问题,请执行以下操作:

sudo apt install python3-psycopg2
Run Code Online (Sandbox Code Playgroud)

这将很好地提取所有需要的依赖项,其中有libpq


Mic*_*ker 7

这些libpq文件在哪个目录中?您可以尝试设置环境变量LD_LIBRARY_PATH以指向此目录或确保它在标准位置.

另外,为什么libpq.so.5链接中没有显示"如下所示"部分?也许你应该跑ldconfig

  • 尝试`LD_LIBRARY_PATH =/opt/postgres/9.0.4/server/lib ./pg_dump`命令. (2认同)
  • 我仍然得到同样的错误.我在运行命令之前甚至尝试过EXPORT LD_LIBRARY_PATH =/opt/postgres/9.0.4/server/lib但没有任何正面的. (2认同)

ode*_*den 6

我在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
Run Code Online (Sandbox Code Playgroud)

这些路径用于RHEL,用于find / -name libpq.so定位安装并将其添加到相同的目标文件夹中,/usr/lib//usr/lib64/使用原始文件名。

根本原因似乎是安装未将此文件放置到共享位置。