GNU/Linux >> Belajar Linux >  >> Linux

tidak ada informasi versi yang tersedia (diperlukan oleh /usr/bin/ssh)

Masalah:libssl.so.1.0.0 dan libcrypto.so.1.0.0 tidak ada informasi versi yang tersedia peringatan/kesalahan.

Setelah banyak penelitian, waktu dan usaha, (butuh waktu berminggu-minggu), inilah yang akhirnya saya lakukan...

Di direktori tempat Anda akhirnya mengekstraksi kode sumber untuk versi openssl 1.0.1h Anda (seharusnya berfungsi untuk versi lain juga.) Saya membuat file bernama openssl.ld

Dalam file ini taruh ini...

OPENSSL_1.0.0 {
    global:
    *;
};

simpan. Sekarang ketik...

make clean

(Hanya untuk memastikan kita memulai dari awal.)

Sekarang untuk bagian yang benar-benar membingungkan...

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

Lalu...

make
make test
make install
ldconfig

Dan itu harus dilakukan. (Ini sangat sederhana. Tidak perlu menambal.)

Saya telah menerapkan solusi ini untuk Debian Wheezy versi 32 dan 64 bit. Dan telah melakukan observasi. Versi 64 bit secara otomatis default ke libssl.so.1.0.0 yang baru dan libcrypto.so.1.0.0 file yang dibuat di /usr/local/lib direktori. Versi 32 bit tidak. Itulah sebabnya saya awalnya mengira bahwa Debian Wheezy versi 32 bit tidak mengalami masalah ini, tetapi hal itu terjadi setelah Anda mendapatkan versi 32 bit untuk menggunakan pustaka openssl baru di /usr/local/lib dir.

Menggunakan ldd perintah untuk menguji pustaka apa yang digunakan binari juga sangat berharga dalam mencari tahu hal ini.


Saya mengkompilasi dan menginstal openssl. Setelah itu, saya menginstal ssh melalui apt-get.

Ini mungkin dua versi OpenSSL yang berbeda. Anda mungkin baik-baik saja karena 1.0.0 adalah biner yang kompatibel dengan 1.0.1, 1.0.2, dll (namun tidak akan kompatibel dengan biner dengan 1.1.0).

ssh Anda mungkin menggunakan versi OpenSSL di /usr/lib/x86_64-linux-gnu/ . Anda harus menggunakan LD_PRELOAD untuk memastikan versi OpenSSL Anda sedang digunakan (dengan asumsi kompatibilitas biner, tentu saja).

Jika Anda tidak ingin menggunakan LD_PRELOAD dan teman-teman, lalu build ssh dari sumber. Pastikan untuk menentukan rpath untuk memastikan editor tautan menggunakan versi OpenSSL Anda, bukan versi sistemnya. Artinya, LDFLAGS Anda harus menyertakan sesuatu seperti -Wl,-rpath,<path to your openssl> . Itu selain -lcrypto biasa , -lssl dan -L<path to your openssl> .

Jika Anda menggunakan Mac OS X, harap maklum bahwa opsi tautan seperti -Bstatic dan -rpath diam-diam diabaikan. Anda akan mengalami crash misterius karena binari yang tidak kompatibel karena OS X menyediakan 0.9.8.

tidak ada informasi versi yang tersedia

Untuk tidak ada informasi versi, saya tidak tahu. ssh dapat menggunakan OPENSSL_VERSION_NUMBER pada waktu kompilasi atau SSLeay /SSLeay_version saat runtime. Lihat OPENSSL_VERSION_NUMBER(3) untuk detailnya.

Bagaimana cara memperbaiki kesalahan ini?

Mungkin saya salah membaca sesuatu, tetapi saya tidak melihat kesalahan di mana pun di pos tersebut.


Linux
  1. Bagaimana Linux Menangani Beberapa Pemisah Jalur Berturut-turut (/home////username///file)?

  2. Linux – Menggabungkan /usr/bin Dan /usr/sbin Ke /bin (gnu/linux)?

  3. Instal binari ke /bin, /sbin, /usr/bin dan /usr/sbin, interaksi dengan --prefix dan DESTDIR

  1. Apa perbedaan antara #!/usr/bin/env bash dan #!/usr/bin/bash?

  2. izin ditolak untuk komposer di /usr/local/bin/

  3. cmake --version menunjuk ke /usr/bin/cmake sementara cmake menunjuk ke /usr/local/bin

  1. Kapan saya harus menggunakan /dev/shm/ dan kapan saya harus menggunakan /tmp/?

  2. Perbedaan antara /bin dan /usr/bin

  3. Mengapa < atau > diperlukan untuk menggunakan /dev/tcp