pg_ctl:加载共享库时出错:libpq.so.5

时间:2015-02-15 14:12:08

标签: postgresql

我试图通过以下方式获得postgres服务器状态:

sudo /etc/init.d/postgres status -u postgres

但是得到以下错误:

/home/alex/olddisk/usr/local/pgsql/bin/pg_ctl: error while loading shared libraries: libpq.so.5: cannot open shared object file: No such file or directory

我补充说:

export LD_LIBRARY_PATH=""
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/lib/"
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/home/alex/olddisk/usr/local/pgsql/lib/"

到我的.bashrc,但它没有帮助。

谢谢。

5 个答案:

答案 0 :(得分:2)

请确保您已安装'postgresql94'软件包(除了postgresql94-server,postgresql94-lib,postgresql94-devel以及您已有的任何其他PG相关软件包)。这些库与该软件包一起安装。

答案 1 :(得分:1)

我认为此问题重复,我遇到了同样的问题并发布了解决方案here

试试这个:

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:快乐!

答案 2 :(得分:1)

当我使用--prefix标志从源构建postgresql时遇到此错误。从源代码构建将必要的共享库安装到您指定的前缀目录下的libs文件夹,而不是通常的位置安装放置共享库。为了解决这个问题,我刚刚将[prefix] .libs文件夹添加到LD_LIBRARY_PATH环境变量中。例如,在使用--prefix / mike / sandbox / postgres构建postgres之后,下面的命令解决了这个问题:

export LD_LIBRARY_PATH = / mike / sandbox / postgres / lib:$ LD_LIBRARY_PATH

答案 3 :(得分:0)

一些想法:

  • 修改后的~/.bashrc仅在启动新的(交互式)shell时生效。虽然赶上那个对你没有帮助,因为:

  • /etc/sudoers,您的sudo配置文件可能指定env_reset。这意味着,/etc/init.d/postgres将无法看到您的shell的$LD_LIBRARY_PATH内容。

  • /etc/init.d/postgres中插入调试语句,以验证我告诉您的内容:echo "LDPATH: $LD_LIBRARY_PATH" >&2

  • 检查/etc/init.d/postgres。可能您必须在此脚本开头附近插入第{3}个语句。或者您必须更新现有的export声明。

答案 4 :(得分:0)

您是否安装了必要的库? 如果您使用的是ubuntu,请尝试:

  sudo apt-get install libpq libpq-dev