我试图通过以下方式获得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
,但它没有帮助。
谢谢。
答案 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