Saya mencoba mengeksekusi pg_dump
pada server PostgreSQL 9.0.4 yang berjalan di Debian dan saya mendapatkan kesalahan di bawah ini:
./pg_dump: error while loading shared libraries: libpq.so.5: cannot open shared object file: No such file or directory
libpq.so.5
adalah tautan ke libpq.so.5.3
seperti yang ditunjukkan di bawah ini
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
Apa yang saya lakukan salah?
Coba ini:
1: Ketahui jalur libpq.so.5
find / -name libpq.so.5
Contoh keluaran:
/usr/pgsql-9.4/lib/libpq.so.5
Jika tidak menemukan apa-apa, periksa apakah Anda telah menginstal postgresql-libs yang sesuai untuk versi postgresql Anda dan platform OS Anda
2: Symbolic link pustaka tersebut di dalam "well known" library path seperti /usr/lib
:
ln -s /usr/pgsql-9.4/lib/libpq.so.5 /usr/lib/libpq.so.5
Perhatian: Jika platform Anda 64 bit, Anda juga HARUS menautkan secara simbolik ke jalur pustaka 64 bit:
ln -s /usr/pgsql-9.4/lib/libpq.so.5 /usr/lib64/libpq.so.5
3: Berbahagialah!
Di direktori mana file libpq
ini berada? Anda dapat mencoba mengatur variabel lingkungan LD_LIBRARY_PATH
untuk menunjuk ke direktori ini atau pastikan direktori ini berada di tempat standar.
Juga, mengapa link libpq.so.5
tidak ditampilkan di bagian "seperti yang ditunjukkan di bawah ini &"? Mungkin anda harus menjalankan ldconfig
?
Saya mendapatkan pesan kesalahan yang sama pada Postgres 9.5 di RHEL 6.5 yang membawa saya ke postingan ini. Tetapi pencarian untuk file libpq.so.5
tidak menghasilkan apa-apa, yang membuat segalanya lebih membingungkan.
Pada akhirnya tautan simbolik berikut ini membuatnya berjalan
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
Jalur ini untuk RHEL, gunakan find / -name libpq.so
untuk lokasi instalasi Anda dan tambahkan ke folder tujuan yang sama /usr/lib/
dan /usr/lib64/
dengan menggunakan nama file asli.
Akar penyebabnya adalah instalasi tidak menempatkan file ini ke lokasi bersama.