galat saat memuat pustaka bersama: libcrypto.so.1.1

13

Ketika saya menjalankan "openssl", saya mendapatkan pesan kesalahan seperti di bawah ini:

openssl: kesalahan saat memuat pustaka bersama: libcrypto.so.1.1: tidak dapat membuka file objek bersama: Tidak ada file atau direktori "

Ini terjadi setelah saya mencoba memperbarui OpenSSL sesuai dengan artikel ini

Apakah ada cara untuk memperbaikinya?

OS: CentOS 6.8 Server web: nginx / 1.10.2

Perbarui # 1:

[root@host ~]# yum info openssl
Installed Packages
Name        : openssl
Arch        : x86_64
Version     : 1.0.1e
Release     : 48.el6_8.3
Size        : 4.0 M
Repo        : installed
From repo   : system-updates
Summary     : A general purpose cryptography library with TLS implementation
URL         : ***
License     : OpenSSL
Description : The OpenSSL toolkit provides support for secure communications
            : between machines. OpenSSL includes a certificate management tool and
            : shared libraries which provide various cryptographic algorithms and
            : protocols.

Available Packages
Name        : openssl
Arch        : i686
Version     : 1.0.1e
Release     : 48.el6_8.3
Size        : 1.5 M
Repo        : system-updates
Summary     : A general purpose cryptography library with TLS implementation
URL         : ***
License     : OpenSSL
Description : The OpenSSL toolkit provides support for secure communications
            : between machines. OpenSSL includes a certificate management tool and
            : shared libraries which provide various cryptographic algorithms and
            : protocols.
mayasl
sumber
2
Maaf, Anda telah mengalami tutorial Internet buruk lainnya. Anda mungkin harus menginstal ulang sistem. Sebelum melangkah lebih jauh, saya sarankan Anda bertanya tentang masalah asli yang Anda coba selesaikan dengan melakukan ini. Mungkin ada cara yang lebih baik untuk mencapai tujuan awal.
Michael Hampton
Saya ingin menginstal aplikasi Server Monitor yang disediakan oleh Monitis. Perlu beberapa dependensi shared library yang tidak diinstal di server saya. Jadi, semua ini terjadi ketika sudah menginstalnya. :(
mayasl
@MichaelHampton Tolong beritahu saya sesuatu kecuali menginstal ulang sistem. Karena situs langsung berjalan di server itu!
mayasl

Jawaban:

20

Saya mengalami masalah yang sama setelah menginstal versi terakhir dari openssl 1.1.0c, saya menyelesaikan masalah menyalin file perpustakaan libcrypto.so.1.1, libcrypto.adan libssl.sodari /usr/local/lib64ke perpustakaan berbagi di /usr/lib64.
Setelah menyalin pustaka, Anda perlu membuat tautan simbolik.

ln -s libcrypto.so.1.1 libcrypto.so
ln -s libssl.so.1.1 libssl.so

Setelah membuat tautan simbolis yang membangun kembali cache ldconfig juga diperlukan:

sudo ldconfig
Benediktus
sumber
8

Dengan versi asli OpenSSL Anda tahu cara menemukan lib bersama karena /usr/lib64termasuk dalam jalur pencarian tautan. Ketika Anda mengunduh dan mengompilasi salinan "lokal" OpenSSL, lib yang dibagikan ditempatkan /usr/local/lib64secara default. Jadi Anda mungkin hanya perlu menambahkan direktori ini ke jalur pencarian linker, seperti ini (sebagai root):

echo "/usr/local/lib64" > /etc/ld.so.conf.d/openssl.conf

kemudian jalankan:

ldconfig

Saya yakin ini akan menyelesaikan masalah Anda.

doug.fsu
sumber
Setidaknya dalam distribusi Ubuntu modern (saya menulis ini pada 16,04 LTS) dan mungkin yang lain, sudo echo "/usr/local/lib64" > /etc/ld.so.conf.d/openssl.confakan menghasilkan kesalahan "izin ditolak" karena bagian kedua dari perintah (file menulis) tidak dieksekusi sebagai root. Jika ini terjadi, coba sudo sh -c "echo '/usr/local/lib64' >> /etc/ld.so.conf.d/openssl.conf"saja.
Matthew Cole
3

Saya mendapatkan kesalahan ini menggunakan Termux di ChromeOS, yang menyebabkan program npmdan nodebaris perintah macet.

Menjalankan pkg upgradememperbaiki masalah!

Carl Walsh
sumber
1

Anda dapat menginstalnya kembali menggunakan

yum install -y openssl-devel

mzhaase
sumber
Saya mencobanya juga, tetapi tidak membantu!
mayasl
@ mayasl Mungkin Anda perlu menginstal ulang paket lain juga. Saya harapkan paket yang dipanggil openssl-develbergantung pada paket yang dipanggil openssl. Ingat bahwa sudah lama saya tidak menyentuh yum, jadi saya tidak bisa memverifikasi sintaks perintah untuk Anda.
kasperd
Saya telah memperbarui pertanyaan saya dengan output "yum info openssl". Silakan lihat, jika ini berguna. Saya menghapus dan menginstal ulang openssl dan openssl-devel sebelum memulai utas ini. Tidak bekerja! Perintah yang saya gunakan: codeyum remove openssl yum remove openssl-devel yum clean all
mayasl
Menginstal ulang openssl, (dan tidak openssl-devel) harus menjadi awal yang baik.
Michael Hampton
Saya sudah mencobanya @MichaelHampton Apakah ini semacam masalah penautan ???
mayasl
1

Apa yang dikatakan @benedict berhasil untuk saya. Namun Anda mungkin menemukan bahwa beberapa symlink mengarah ke versi yang lebih lama. Menjalankan ls -l libcrypto*dari / usr / libs akan menunjukkan kepada Anda tautan. Seperti pada contoh di bawah ini:

lrwxrwxrwx 1 root root      16 May 21 15:28 libcrypto.so -> libcrypto.so.1.0

Maka Anda ingin menghapus tautan yang ada terlebih dahulu dengan mengetik sudo rm libcrypto.sodan kemudian menyalin libcrypto.so.1.1 seperti yang disebutkan oleh @benedict. Akhirnya Anda dapat membuat tautan baru. sudo ln -s libcrypto.so.1.1 libcrypto.so

Semoga ini membantu.

Ihsan Izwer
sumber
1

The libcrypto.somilik openssl-libspaket. Jika Anda secara manual menghapus (dengan --nodeps) paket ini atau merusaknya dengan memutakhirkannya, Anda akan kehilangan akses ke yum, wget, curl, ssh, dll. Jika sistem memiliki akses Internet, unduh perintah openssl-libsmenggunakan /usr/bin/GET. Sintaksnya akan terlihat seperti di bawah ini jika Anda mencoba mengembalikan versi openssl-libs-1.0.2k-8.el7.x86_64:

/usr/bin/GET http://downloadURL/openssl-libs-1.0.2k-8.el7.x86_64.rpm > openssl-libs-1.0.2k-8.el7.x86_64.rpm

Ini akan membuat openssl-libs-1.0.2k-8.el7.x86_64.rpmpaket untuk Anda, Anda dapat menggunakan ini untuk menginstal ulang atau mengekstrak .sofile yang hilang .

Karthik
sumber
0

Saya mengalami masalah yang persis sama ... Saya telah menyelesaikannya dengan menjalankan perintah berikut.

ln -s /usr/local/lib/libcrypto.so.1.1 /usr/lib/libcrypto.so.1.1

Ini akan membuat softlink dan Anda siap melakukannya.

Faheem
sumber
0

Ini adalah solusi terbaik yang saya temukan di sekitar ... solusi lain yang disediakan di internet, tidak akan selamat dari sistem reboot;)

OS: Ubuntu 16.04

sudo vim /etc/ld.so.conf.d/libc.conf

Komentari pengaturan direktori lib dan tambahkan jalur yang bagus

# libc default configuration

#/usr/local/lib

/usr/lib

Setelah selesai mengedit, jalankan perintah ini:

sudo ldconfig

Maka Anda akan memiliki pengaturan yang baik ketika Anda menjalankan:

ldd / usr / bin / openssl

Sebelum perbaikan ini:

 /usr/bin/openssl: /usr/local/lib/libssl.so.1.0.0: no version information available (required by /usr/bin/openssl)
/usr/bin/openssl: /usr/local/lib/libssl.so.1.0.0: no version information available (required by /usr/bin/openssl)
 /usr/bin/openssl: /usr/local/lib/libssl.so.1.0.0: no version information available (required by /usr/bin/openssl)
/usr/bin/openssl: /usr/local/lib/libcrypto.so.1.0.0: no version information available (required by /usr/bin/openssl)
/usr/bin/openssl: /usr/local/lib/libcrypto.so.1.0.0: no version information available (required by /usr/bin/openssl)
/usr/bin/openssl: /usr/local/lib/libcrypto.so.1.0.0: no version information available (required by /usr/bin/openssl)
/usr/bin/openssl: /usr/local/lib/libcrypto.so.1.0.0: no version information available (required by /usr/bin/openssl)
linux-vdso.so.1 =>  (0x00007ffe6d1e3000)
libssl.so.1.0.0 => /usr/local/lib/libssl.so.1.0.0 (0x00007f8999827000)
libcrypto.so.1.0.0 => /usr/local/lib/libcrypto.so.1.0.0 (0x00007f89993ed000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f8999023000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f8998e1f000)
/lib64/ld-linux-x86-64.so.2 (0x00007f8999a97000)

Setelah perbaikan saya berikan:

linux-vdso.so.1 =>  (0x00007ffec39bc000)
libssl.so.1.0.0 => /lib/x86_64-linux-gnu/libssl.so.1.0.0 (0x00007f7faad22000)
libcrypto.so.1.0.0 => /lib/x86_64-linux-gnu/libcrypto.so.1.0.0 (0x00007f7faa8dd000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f7faa513000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f7faa30f000)
/lib64/ld-linux-x86-64.so.2 (0x00007f7faaf8b000)
NOL
sumber
Untuk orang-orang dengan path CentOS, saya pikir file yang bagus adalah /etc/ld.so.conf;), hanya untuk menjadi jelas.
ZEROF
0

Pada CentOS 7 libssl.so.1.1berada di /usr/local/ssl/lib.

Jadi saya hanya perlu menambahkan jalur ini ke lokasi default, di mana loader dinamis mencari perpustakaan. Saya membuat file terpisah untuk biner openssl saya, bernama openssl-1.1.1c.conf, di /etc/ld.so.conf.dfolder:

echo "/usr/local/ssl/lib" > /etc/ld.so.conf.d/openssl-1.1.1c.conf

Sekarang berhasil.

Boris Burkov
sumber
-1

Setelah membangun dan menginstal open ssl openssl-1.1.0f, saya memperbaiki kesalahan yang sama untuk lib libssl.so.1.1 membuat tautan lunak:

ln -s /usr/local/lib/libssl.so.1.1 /usr/lib/libssl.so.1.1

Rafael
sumber