2013-08-22 41 views
12

Tôi đang sử dụng Ubuntu 12.04 - máy chủ và liên tục nhận được:không có phiên bản thông tin có sẵn

/usr/lib/libcrypto.so.1.0.0: không có thông tin phiên bản có sẵn (theo yêu cầu của/usr/lib/libpython2.7.so.1.0)

/usr/lib/libssl.so.1.0.0: không có thông tin phiên bản có sẵn (theo yêu cầu của /usr/lib/libpython2.7. so.1.0)

thông báo lỗi không có bất kỳ mẫu nào cho lý do. Nó có thể là một cái gì đó đơn giản như chạy vi. Các tập tin có và họ không phải là liên kết.

Điều này bắt đầu xảy ra một chút sau khi biên dịch và cài đặt OpenLDAP, sử dụng hướng dẫn từ trang web của họ trong khi tìm hiểu các khái niệm cơ bản về máy chủ ldap. Tôi đã gỡ bỏ OpenLDAP tất nhiên để thử và loại bỏ vấn đề. Tôi cũng đã cài đặt lại OpenSSL và libssl1.0.0 để thử và kiểm tra giải pháp đó.

Bất kỳ trợ giúp nào sẽ được đánh giá rất nhiều, Google chưa thật sự hữu ích.

+0

Dường như quản lý gói của bạn không cung cấp các liên kết tượng trưng thích hợp cho /usr/lib/libcrypto.so và /usr/lib/libssl.so – jww

Trả lời

4

Tôi cũng nhận được thông báo cảnh báo gây phiền nhiễu đó sau khi biên dịch và cài đặt phiên bản mới nhất của openssl từ nguồn (openssl-1.0.1f). Sau khi một số nghiên cứu cùng với một số thử nghiệm và lỗi, tôi đã có thể khắc phục vấn đề cho kịch bản cụ thể của tôi. Về cơ bản nó đã đi xuống chính xác những gì thông điệp cảnh báo nói. Không có thông tin phiên bản có sẵn trong các thư viện được xây dựng từ nguồn. Đó là điều mà nhóm Ubuntu đã thêm vào trong bản phân phối của họ. Vì vậy, giải pháp là biên dịch lại mã nguồn mở của bạn sau khi vá nó bằng tập lệnh phiên bản được bao gồm trong phân phối gói Ubuntu cho openssl.

Tôi đã tìm "bản mở rộng bản vá chứa thông tin phiên bản cho ubuntu" và đã xảy ra để tìm gói nguồn tôi cần tại https://launchpad.net/ubuntu/+archive/primary/+files/openssl_1.0.1f-1ubuntu1.debian.tar.gz.

Vì vậy, đây là quá trình tôi theo:

rm -r -f -v openssl-1.0.1f (just to make sure you start fresh) 
wget http://www.openssl.org/source/openssl-1.0.1f.tar.gz 
tar -xvf openssl-1.0.1f.tar.gz 
wget https://launchpad.net/ubuntu/+archive/primary/+files/openssl_1.0.1f-1ubuntu1.debian.tar.gz 
tar -xvf openssl_1.0.1f-1ubuntu1.debian.tar.gz 
mv debian openssl_1.0.1f-1ubuntu1 (just because that's what I did) 
cd openssl-1.0.1f/ 
patch -p1 < ../openssl_1.0.1f-1ubuntu1/patches/version-script.patch 
./config 
make 
make test 
sudo make install 

Bây giờ, thông báo lỗi nên được đi.

Điều đáng nói đến là ban đầu tôi đã vá nguồn openssl-1.0.1f của mình bằng tập lệnh phiên bản được bao gồm trong gói nguồn ban đầu từ http://archive.ubuntu.com/ubuntu/pool/main/o/openssl/openssl_1.0.1-4ubuntu5.11.debian.tar.gz. Nhưng, số make của tôi không thành công do lỗi. Tôi đoán nó có ý nghĩa rằng tôi cần thiết để có được cùng một phiên bản 1.0.1f.

Tín dụng chuyển đến @mattcasw cho bài đăng của mình http://ubuntuforums.org/showthread.php?t=1905963 dẫn tôi xuống con đường bên phải.

11

Tôi cho rằng tôi sẽ nhận thẳng vào vấn đề ...

Vấn đề: libssl.so.1.0.0 và libcrypto.so.1.0.0 không có thông tin phiên bản có sẵn cảnh báo/lỗi.

TÔI ĐÃ GIẢI PHÁP NÓ !!! YAY !!! (Fireworks nên đi tắt và các công cụ.)

Sau nhiều nghiên cứu, thời gian và công sức, (mất hàng tuần), đây là những gì cuối cùng tôi đã kết thúc làm ...

Trong thư mục mà bạn đã kết thúc chiết xuất mã nguồn cho phiên bản openssl 1.0.1h của bạn (Cũng nên làm việc cho các phiên bản khác).) Tôi tạo ra một tập tin gọi là openssl.ld

Trong tập tin này đặt này ...

trả lời

OPENSSL_1.0.0 { 
    global: 
    *; 
}; 

tiết kiệm nó. Bây giờ gõ vào ...

làm sạch (Chỉ cần chắc chắn chúng ta đang bắt đầu tươi.)

Đây là phần thực sự quan tâm boggling ...

./config --prefix=/usr/local --openssldir=/usr/local/openssl shared -Wl,--version-script=openssl.ld -Wl,-Bsymbolic-functions 

Sau đó ...

make 

make test 

make install 

ldconfig 

Và điều đó nên thực hiện. (Rất đơn giản. Không yêu cầu bản vá.)

Tôi đã áp dụng giải pháp này cho Debian Wheezy cả phiên bản 32 và 64 bit. Và đã thực hiện một quan sát. Phiên bản 64 bit sẽ tự động mặc định thành các tệp libssl.so.1.0.0 và libcrypto.so.1.0.0 mới được tạo trong thư mục/usr/local/lib. Phiên bản 32 bit không. Đó là lý do tại sao tôi đã nghĩ lúc đầu rằng phiên bản 32 bit của Debian Wheezy không bị vấn đề này, nhưng nó một khi bạn nhận được phiên bản 32 bit để sử dụng các thư viện openssl mới trong thư mục/usr/local/lib.

Sử dụng lệnh ldd để kiểm tra những thư viện nào mà các tệp nhị phân đang sử dụng là vô giá khi tìm ra điều này.

Chúc một ngày tốt đẹp.

Ông E. Dude

+2

Nó hoạt động tuyệt vời !!!. Cảm ơn. Nhân tiện, tôi đã sử dụng đường dẫn tuyệt đối cho tập lệnh phiên bản. Ví dụ: --version-script =/home/userid/openssl/openssl.ld – jpark7ca