Kiedy uruchamiam „openssl”, pojawia się błąd jak poniżej:
openssl: błąd podczas ładowania bibliotek współdzielonych: libcrypto.so.1.1: nie można otworzyć pliku obiektu współdzielonego: brak takiego pliku lub katalogu ”
Stało się to po próbie aktualizacji OpenSSL zgodnie z tym artykułem
Czy można to naprawić?
System operacyjny: CentOS 6.8 Serwer WWW: nginx / 1.10.2
Aktualizacja nr 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.
Odpowiedzi:
Miałem ten sam problem po zainstalowaniu ostatniej wersji openssl 1.1.0c, że problem został rozwiązany kopiowanie plików bibliotecznych
libcrypto.so.1.1
,libcrypto.a
alibssl.so
od/usr/local/lib64
do biblioteki zakładowego/usr/lib64
.Po skopiowaniu bibliotek musisz utworzyć dowiązanie symboliczne.
Po utworzeniu dowiązania symbolicznego wymagana była również pamięć podręczna ldconfig :
źródło
W twojej oryginalnej wersji OpenSSL wiedział, jak znaleźć współdzielone biblioteki, ponieważ
/usr/lib64
jest zawarty w ścieżce wyszukiwania linkera. Kiedy pobrałeś i skompilowałeś „lokalną” kopię OpenSSL, współdzielone biblioteki lib były/usr/local/lib64
domyślnie umieszczone . Prawdopodobnie musisz po prostu dodać ten katalog do ścieżki wyszukiwania linkera, tak jak ten (jako root):następnie wykonaj:
Wierzę, że to rozwiąże problem.
źródło
sudo echo "/usr/local/lib64" > /etc/ld.so.conf.d/openssl.conf
spowoduje błąd „odmowa uprawnień”, ponieważ druga połowa polecenia (zapis pliku) nie jest wykonywana jako root. Jeśli tak się stanie, spróbujsudo sh -c "echo '/usr/local/lib64' >> /etc/ld.so.conf.d/openssl.conf"
zamiast tego.Ten błąd wystąpił podczas używania Termuxa w systemie ChromeOS, co spowodowało awarię programów
npm
inode
wiersza poleceń.Uruchomienie
pkg upgrade
rozwiązało problem!źródło
Możesz go ponownie zainstalować za pomocą
yum install -y openssl-devel
źródło
openssl-devel
będzie zależał od pakietu o nazwieopenssl
. Pamiętaj, że minęło dużo czasu, odkąd go dotknąłemyum
, więc nie mogę zweryfikować dla ciebie składni polecenia.code
yum remove openssl yum remove openssl-devel yum oczyścić wszystkieopenssl
(i nieopenssl-devel
) powinna być dobrym początkiem.To, co powiedział @benedict, działało dla mnie. Jednak może się okazać, że niektóre dowiązania symboliczne wskazują starsze wersje. Uruchomienie
ls -l libcrypto*
z / usr / libs pokaże linki. Jak w poniższym przykładzie:Następnie chciałbyś najpierw usunąć istniejące łącze, wpisując,
sudo rm libcrypto.so
a następnie kopiując libcrypto.so.1.1, jak wspomniano w @benedict. Wreszcie możesz utworzyć nowy link.sudo ln -s libcrypto.so.1.1 libcrypto.so
Mam nadzieję że to pomoże.
źródło
libcrypto.so
Należy doopenssl-libs
spakowania. Jeśli ręcznie wymusisz usunięcie (z--nodeps
) tego pakietu lub uszkodzenie go przez uaktualnienie, utracisz dostęp do yum, wget, curl, ssh itp. Jeśli system ma dostęp do Internetu, pobierz polecenieopenssl-libs
za pomocą/usr/bin/GET
. Jeśli próbujesz przywrócić wersję, składnia wygląda następującoopenssl-libs-1.0.2k-8.el7.x86_64
:Spowoduje to utworzenie
openssl-libs-1.0.2k-8.el7.x86_64.rpm
pakietu, którego możesz użyć do ponownej instalacji lub wypakowania brakującego.so
pliku.źródło
Przeszedłem dokładnie ten sam problem ... Rozwiązałem go, uruchamiając następujące polecenia.
ln -s /usr/local/lib/libcrypto.so.1.1 /usr/lib/libcrypto.so.1.1
Spowoduje to utworzenie softlink i możesz zacząć.
źródło
To najlepsze rozwiązanie, jakie znalazłem ... inne rozwiązania dostępne w Internecie nie przetrwają ponownego uruchomienia systemu;)
System operacyjny: Ubuntu 16.04
Skomentuj ustawienia katalogu lib i dodaj dobrą ścieżkę
Po zakończeniu edycji uruchom to polecenie:
Wtedy będziesz mieć dobre ustawienie, gdy uruchomisz:
ldd / usr / bin / openssl
Przed tą poprawką:
Po poprawce podałem:
źródło
Na CentOS 7
libssl.so.1.1
znajduje się w/usr/local/ssl/lib
.Musiałem więc tylko dodać tę ścieżkę do domyślnych lokalizacji, w których dynamiczny moduł ładujący szuka bibliotek. Utworzyłem osobny plik dla mojego pliku binarnego openssl o nazwie
openssl-1.1.1c.conf
w/etc/ld.so.conf.d
folderze:echo "/usr/local/ssl/lib" > /etc/ld.so.conf.d/openssl-1.1.1c.conf
Teraz działa.
źródło
Po zbudowaniu i zainstalowaniu open ssl openssl-1.1.0f naprawiłem ten sam błąd dla lib libssl.so.1.1 tworząc miękkie łącze:
ln -s /usr/local/lib/libssl.so.1.1 /usr/lib/libssl.so.1.1
źródło