lỗi trong khi tải thư viện chia sẻ: libcrypto.so.1.1


13

Khi tôi chạy "openssl", tôi gặp lỗi như dưới đây:

openssl: lỗi trong khi tải các thư viện dùng chung: libcrypto.so.1.1: không thể mở tệp đối tượng dùng chung: Không có tệp hoặc thư mục như vậy "

Điều này xảy ra sau khi tôi cố cập nhật OpenSSL theo bài viết này

Có cách nào để khắc phục điều này?

HĐH: Máy chủ web CentOS 6.8: nginx / 1.10.2

Cập nhật số 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
Xin lỗi, bạn đã chạy vào một hướng dẫn Internet xấu khác. Bạn có thể phải cài đặt lại hệ thống. Trước khi đi xa hơn, tôi khuyên bạn nên hỏi về vấn đề ban đầu mà bạn đang cố gắng giải quyết bằng cách làm điều này. Có lẽ có một cách tốt hơn để hoàn thành mục tiêu ban đầu.
Michael Hampton

Tôi muốn cài đặt ứng dụng Server Monitor được cung cấp bởi Monitis. Nó cần một số phụ thuộc thư viện chia sẻ không được cài đặt trong máy chủ của tôi. Vì vậy, tất cả điều này xảy ra khi đã được cài đặt. :(
mayasl

@MichaelHampton Xin vui lòng cho tôi biết một số thứ trừ việc cài đặt lại hệ thống. Bởi vì một trang web trực tiếp đang chạy trên máy chủ đó!
mayasl

Câu trả lời:


20

Tôi đã có cùng một vấn đề sau khi cài đặt phiên bản mới nhất của openssl 1.1.0c, tôi giải quyết vấn đề sao chép các tập tin thư viện libcrypto.so.1.1, libcrypto.alibssl.sotừ /usr/local/lib64thư viện phần tại /usr/lib64.
Sau khi sao chép các thư viện, bạn cần tạo liên kết tượng trưng.

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

Sau khi tạo liên kết tượng trưng, việc xây dựng lại bộ đệm ldconfig cũng được yêu cầu:

sudo ldconfig

8

Với phiên bản OpenSSL ban đầu của bạn, nó biết cách tìm các lib được chia sẻ vì /usr/lib64được bao gồm trong đường dẫn tìm kiếm của liên kết. Khi bạn đã tải xuống và biên dịch một bản sao "cục bộ" của OpenSSL, các lib được chia sẻ được đặt /usr/local/lib64theo mặc định. Vì vậy, có lẽ bạn chỉ cần thêm thư mục này vào đường dẫn tìm kiếm của trình liên kết, như thế này (với quyền root):

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

sau đó thực hiện:

ldconfig

Tôi tin rằng điều này sẽ giải quyết vấn đề của bạn.


Trong ít nhất các bản phân phối Ubuntu hiện đại (tôi đang viết bản này vào ngày 16.04 LTS) và có thể là các bản phân phối khác, sudo echo "/usr/local/lib64" > /etc/ld.so.conf.d/openssl.confsẽ dẫn đến lỗi "bị từ chối cấp phép" vì nửa sau của lệnh (ghi tệp) không được thực thi dưới quyền root. Nếu điều này xảy ra, hãy thử sudo sh -c "echo '/usr/local/lib64' >> /etc/ld.so.conf.d/openssl.conf"thay thế.
Matthew Cole

3

Tôi đã gặp lỗi này khi sử dụng Termux trên ChromeOS, điều này khiến các chương trình dòng lệnh npmnodebị lỗi.

Chạy đã pkg upgradekhắc phục sự cố!


1

Bạn có thể cài đặt lại bằng cách sử dụng

yum install -y openssl-devel


Tôi cũng đã thử nó, nhưng không giúp được gì!
mayasl

@mayasl Có lẽ bạn cũng cần phải cài đặt lại các gói khác. Tôi mong đợi một gói được gọi openssl-develphụ thuộc vào một gói được gọi openssl. Nghĩ rằng đã lâu tôi mới chạm vào yum, vì vậy tôi không thể xác minh cú pháp của lệnh cho bạn.
kasperd

Tôi đã cập nhật câu hỏi của mình với đầu ra của "yum information openssl". Xin hãy xem, nếu nó hữu ích. Tôi đã gỡ bỏ và cài đặt lại openssl và openssl-devel trước khi bắt đầu chuỗi này. Không hoạt động! Các lệnh tôi đã sử dụng: codeyum remove openssl yum remove openssl-devel yum dọn dẹp tất cả
mayasl

Cài đặt lại openssl, (và không openssl-devel) nên là một khởi đầu tốt.
Michael Hampton

Tôi đã thử rằng @MichaelHampton Đây có phải là một số vấn đề liên kết không ???
mayasl

1

Những gì @benedict nói đã làm việc cho tôi. Tuy nhiên, bạn có thể thấy rằng một số liên kết tượng trưng đang trỏ đến các phiên bản cũ hơn. Chạy ls -l libcrypto*từ / usr / libs sẽ hiển thị cho bạn các liên kết. Như trong ví dụ dưới đây:

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

Sau đó, bạn sẽ muốn xóa liên kết hiện có trước bằng cách nhập sudo rm libcrypto.sovà sau đó sao chép libcrypto.so.1.1 như @benedict đã đề cập. Cuối cùng, bạn có thể tạo liên kết mới. sudo ln -s libcrypto.so.1.1 libcrypto.so

Hi vọng điêu nay co ich.


1

Các gói libcrypto.sothuộc về openssl-libs. Nếu bạn buộc gỡ bỏ thủ công (với --nodeps) gói này hoặc làm hỏng nó bằng cách nâng cấp nó, bạn sẽ mất quyền truy cập vào yum, wget, curl, ssh, v.v. Nếu hệ thống có quyền truy cập Internet, hãy tải xuống openssl-libsbằng cách sử dụng lệnh /usr/bin/GET. Cú pháp sẽ giống như bên dưới nếu bạn đang cố gắng khôi phục phiên bản 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

Điều này sẽ tạo openssl-libs-1.0.2k-8.el7.x86_64.rpmgói cho bạn, bạn có thể sử dụng gói này để cài đặt lại hoặc giải nén .sotệp bị thiếu .


0

Tôi đã trải qua cùng một vấn đề chính xác ... Tôi đã giải quyết nó bằng cách chạy các lệnh sau.

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

Điều này sẽ tạo ra một liên kết mềm và bạn tốt để đi.


0

Đây là giải pháp tốt nhất tôi đã tìm thấy xung quanh ... các giải pháp khác được cung cấp trên internet, sẽ không tồn tại khi khởi động lại hệ thống;)

HĐH: Ubuntu 16.04

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

Bình luận cài đặt thư mục lib và thêm đường dẫn tốt

# libc default configuration

#/usr/local/lib

/usr/lib

Khi bạn chỉnh sửa xong, hãy chạy lệnh này:

sudo ldconfig

Sau đó, bạn sẽ có cài đặt tốt khi bạn chạy:

ldd / usr / bin / openssl

Trước khi sửa lỗi này:

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

Sau khi sửa, tôi cung cấp:

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)

Đối với những người có đường dẫn CentOS, tôi nghĩ rằng tệp tốt là /etc/ld.so.conf;), chỉ cần rõ ràng.
ZEROF

0

Trên CentOS 7 libssl.so.1.1cư trú tại /usr/local/ssl/lib.

Vì vậy, tôi chỉ cần thêm đường dẫn này vào các vị trí mặc định, nơi trình tải động tìm thư viện. Tôi đã tạo một tệp riêng cho tệp nhị phân openssl của mình, được đặt tên openssl-1.1.1c.conf, trong /etc/ld.so.conf.dthư mục:

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

Bây giờ nó hoạt động.


-1

Sau khi xây dựng và cài đặt open ssl openssl-1.1.0f, tôi đã sửa lỗi tương tự cho lib libssl.so.1.1 tạo một liên kết mềm:

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

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.