kütüphaneleri yüklerken hata: libcrypto.so.1.1


13

"Openssl" çalıştırdığımda aşağıdaki gibi bir hata alıyorum:

openssl: paylaşılan kütüphaneleri yüklerken hata: libcrypto.so.1.1: paylaşılan nesne dosyası açılamıyor: Böyle bir dosya veya dizin yok "

Bu, bu makaleye göre OpenSSL güncelleştirmeye çalıştıktan sonra oldu

Bunu düzeltmek için yine de var mı?

İşletim Sistemi: CentOS 6.8 Web server: nginx / 1.10.2

Güncelleme # 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.

2
Maalesef başka bir kötü İnternet eğiticisiyle karşılaştınız. Sistemi yeniden yüklemeniz gerekebilir. Daha ileriye gitmeden önce, bunu yaparak çözmeye çalıştığınız orijinal sorunu sormanızı öneririm. Orijinal hedefe ulaşmak için muhtemelen daha iyi bir yol vardır.
Michael Hampton

Monitis tarafından sağlanan Sunucu Monitörü uygulamasını kurmak istedim. Sunucumda yüklü olmayan bazı paylaşılan kitaplık bağımlılıklarına ihtiyaç duyuyordu. Yani, tüm bunlar bunları kurmak için olduğunda oldu. :(
mayasl

@MichaelHampton Lütfen sistemi yeniden yüklemek dışında bir şey söyle. Çünkü o sunucuda canlı bir site çalışıyor!
mayasl

Yanıtlar:


20

Ben openssl 1.1.0c son sürümünü yükledikten sonra aynı sorunu yaşıyordu, ben kütüphane dosyaları kopyalama sorunu çözüldü libcrypto.so.1.1, libcrypto.ave libssl.sogelen /usr/local/lib64de payı kütüphanesine /usr/lib64.
Kütüphaneleri kopyaladıktan sonra sembolik bağlantı oluşturmanız gerekir.

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

Sembolik bağlantı oluşturulduktan sonra ldconfig önbelleğini de yeniden oluşturmak gerekiyordu:

sudo ldconfig

9

OpenSSL'nin orijinal sürümünüzle /usr/lib64, bağlayıcının arama yoluna dahil olduğu için paylaşılan kütüphanelerin nasıl bulunacağını biliyordu . OpenSSL'nin "yerel" bir kopyasını indirip derlediğinizde, paylaşılan kütüphaneler /usr/local/lib64varsayılan olarak yerleştirilir . Bu nedenle, muhtemelen bu dizini, bağlayıcının arama yoluna eklemeniz gerekir, bunun gibi (kök olarak):

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

sonra yürütün:

ldconfig

Bunun sorununuzu çözeceğine inanıyorum.


En azından modern Ubuntu dağıtımlarında (bunu 16.04 LTS'de yazıyorum) ve muhtemelen diğerleri, sudo echo "/usr/local/lib64" > /etc/ld.so.conf.d/openssl.confkomutun ikinci yarısı (dosya yazma) kök olarak yürütülmediği için bir "izin reddedildi" hatasıyla sonuçlanacak. Bu olursa, sudo sh -c "echo '/usr/local/lib64' >> /etc/ld.so.conf.d/openssl.conf"bunun yerine deneyin .
Matthew Cole

3

Bu hatayı ChromeOS'ta Termux kullanarak npmve nodekomut satırı programlarının çökmesine neden oldum .

Koşmak pkg upgradesorunu çözdü!


1

Kullanarak yeniden yükleyebilirsiniz

yum install -y openssl-devel


Ben de denedim, ama yardım etmedi!
mayasl

@mayasl Belki diğer paketleri de yeniden yüklemeniz gerekir. Denilen bir paketin denilen bir pakete openssl-develbağlı olmasını beklerdim openssl. Dokunduğumdan bu yana uzun zaman geçtiğini unutmayın, bu yumnedenle komutun sözdizimini sizin için doğrulayamıyorum.
kasperd

Sorumumu "yum info openssl" çıktısı ile güncelledim. Yararlıysa lütfen bir göz atın. Bu konuya başlamadan önce openssl ve openssl-devel'i kaldırdım ve yeniden kurdum. İşe yaramadı! Kullandığım Komutlar: codeyum remove openssl yum remove openssl-devel yum clean all
mayasl

Yeniden kurmak openssl(ve değil openssl-devel) iyi bir başlangıç ​​olmalıdır.
Michael Hampton

Zaten denedim @MichaelHampton Bu bir tür bağlantı sorunu mu ???
mayasl

1

@Benedict'in söyledikleri benim için çalıştı. Bununla birlikte, bazı sembollerin eski sürümlere işaret ettiğini görebilirsiniz. Koşu ls -l libcrypto*/ usr / libs dan size bağlantı gösterecektir. Aşağıdaki örnekte olduğu gibi:

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

Sonra ilk sudo rm libcrypto.soolarak libcrypto.so.1.1 yazıp @benedict belirtildiği gibi kopyalayarak mevcut bağlantıyı kaldırmak istersiniz . Son olarak yeni bağlantıyı oluşturabilirsiniz. sudo ln -s libcrypto.so.1.1 libcrypto.so

Bu yardımcı olur umarım.


1

libcrypto.soAittir openssl-libspaketleyin. --nodepsBu paketi el ile kaldırmayı (ile ) zorla kaldırır veya yükselterek bozarsanız, yum, wget, curl, ssh, vb. Öğelerine erişimi kaybedersiniz. Sistemin İnternet erişimi varsa openssl-libs, komutu kullanarak indirin /usr/bin/GET. Sürümü geri yüklemeye çalışıyorsanız sözdizimi aşağıdaki gibi görünür 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

Bu openssl-libs-1.0.2k-8.el7.x86_64.rpmsizin için bir paket oluşturacaktır , eksik .sodosyayı yeniden yüklemek veya ayıklamak için bunu kullanabilirsiniz .


0

Tamamen aynı sorundan geçtim ... Aşağıdaki komutları çalıştırarak çözdüm.

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

Bu bir softlink oluşturacak ve gitmeye hazırsınız.


0

Bu, bulduğum en iyi çözüm ... İnternette sağlanan diğer çözümler, sistemin yeniden başlatılmasından kurtulamayacak;)

İşletim Sistemi: Ubuntu 16.04

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

Lib dizini ayarlarını yorumlayın ve iyi bir yol ekleyin

# libc default configuration

#/usr/local/lib

/usr/lib

Düzenlemeyi tamamladığınızda şu komutu çalıştırın:

sudo ldconfig

O zaman çalıştırdığınızda iyi bir ayara sahip olacaksınız:

ldd / usr / bin / openssl

Bu düzeltmeden önce:

 /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)

Düzeltmeden sonra sağladım:

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)

CentOS yolu olan insanlar için, iyi bir dosyanın /etc/ld.so.conf;) olduğunu düşünüyorum.
ZEROF

0

CentOS üzerinde 7 libssl.so.1.1bulunduğu yer /usr/local/ssl/lib.

Bu yüzden dinamik yükleyicinin kütüphaneleri aradığı varsayılan konumlara bu yolu eklemek zorunda kaldım. Ben adında benim openssl ikili, için ayrı bir dosya oluşturdu openssl-1.1.1c.confiçinde, /etc/ld.so.conf.dklasörün:

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

Şimdi çalışıyor.


-1

Açık ssl openssl-1.1.0f oluşturup yükledikten sonra, lib libssl.so.1.1 için yumuşak bir bağlantı oluşturmak için aynı hatayı düzelttim:

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

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.