2012-10-08 33 views
9

Tôi đang cố gắng thực thi pg_dump trên máy chủ PostgreSQL 9.0.4 chạy trên Debian và tôi gặp lỗi bên dưới:Lỗi khi tải thư viện dùng chung: libpq.so.5: không thể mở tệp đối tượng được chia sẻ: Không có tệp hoặc thư mục như vậy

./pg_dump: error while loading shared libraries: libpq.so.5: cannot open shared object file: No such file or directory 

libpq.so.5 là một liên kết đến libpq.so.5.3 như hình dưới đây

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 

nó là gì mà tôi đang làm sai?

Trả lời

6

Trong đó thư mục nào là các tệp libpq này? Bạn có thể thử đặt biến môi trường LD_LIBRARY_PATH để trỏ đến thư mục này hoặc đảm bảo rằng nó ở vị trí tiêu chuẩn.

Ngoài ra, tại sao không phải là liên kết libpq.so.5 được hiển thị trong phần "như được hiển thị bên dưới"? Có lẽ bạn chỉ nên chạy ldconfig?

+1

các tệp libpq nằm trong /opt/postgres/9.0.4/server/lib – McKibet

+2

Hãy thử lệnh 'LD_LIBRARY_PATH =/opt/postgres/9.0.4/server/lib./Pg_dump'. –

+2

Tôi vẫn gặp lỗi tương tự. Tôi thậm chí đã thử xuất LD_LIBRARY_PATH =/opt/postgres/9.0.4/server/lib trước khi chạy lệnh nhưng không có gì tích cực. – McKibet

10

Hãy thử điều này:

1: Biết con đường dụ libpq.so.5

find/-name libpq.so.5 

Output: /usr/pgsql-9.4/lib/libpq.so.5 Nếu không tìm thấy gì, kiểm tra xem bạn đã cài đặt postgresql-libs phù hợp cho phiên bản postgresql của bạn và nền tảng hệ điều hành của bạn

2: Liên kết tượng trưng cho thư viện đó trong đường dẫn thư viện "nổi tiếng" như /usr/lib:

ln -s /usr/pgsql-9.4/lib/libpq.so.5 /usr/lib/libpq.so.5 

Chú ý: Nếu nền tảng của bạn là 64 bit, bạn PHẢI cũng liên kết tượng trưng cho 64 bit thư viện đường dẫn:

ln -s /usr/pgsql-9.4/lib/libpq.so.5 /usr/lib64/libpq.so.5 

3: Hãy hạnh phúc!

1

Tôi đã nhận được thông báo lỗi tương tự trên Postgres 9.5 trên RHEL 6.5 dẫn tôi đến bài đăng này. Nhưng một tìm kiếm cho các tập tin libpq.so.5 trả lại không có gì, mà làm cho mọi thứ khó hiểu hơn.

Cuối cùng các liên kết tượng trưng sau đây đã làm cho nó chạy

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 

Những con đường dành cho RHEL, sử dụng find/-name libpq.so đến vị trí lắp đặt của bạn và thêm nó vào các thư mục cùng một điểm đến /usr/lib//usr/lib64/ sử dụng tên tập tin gốc.

Nguyên nhân gốc xuất hiện khi cài đặt không đặt tệp này vào một vị trí được chia sẻ.

Các vấn đề liên quan