Bagaimana cara saya menginstal pustaka OpenSSL di Ubuntu?

235

Saya mencoba membuat beberapa kode di Ubuntu 10,04 LTS yang menggunakan OpenSSL 1.0.0. Ketika saya menjalankan make, ia memanggil g ++ dengan opsi "-lssl". Sumbernya meliputi:

#include <openssl/bio.h>
#include <openssl/buffer.h>
#include <openssl/des.h>
#include <openssl/evp.h>
#include <openssl/pem.h>
#include <openssl/rsa.h>

Saya berlari:

$ sudo apt-get install openssl
Reading package lists... Done
Building dependency tree       
Reading state information... Done
openssl is already the newest version.
0 upgraded, 0 newly installed, 0 to remove and 3 not upgraded.

Tapi saya kira paket openssl tidak termasuk perpustakaan. Saya mendapatkan kesalahan ini saat dibuat:

foo.cpp:21:25: error: openssl/bio.h: No such file or directory
foo.cpp:22:28: error: openssl/buffer.h: No such file or directory
foo.cpp:23:25: error: openssl/des.h: No such file or directory
foo.cpp:24:25: error: openssl/evp.h: No such file or directory
foo.cpp:25:25: error: openssl/pem.h: No such file or directory
foo.cpp:26:25: error: openssl/rsa.h: No such file or directory

Bagaimana cara menginstal pustaka OpenSSL C ++ di Ubuntu 10.04 LTS?

Saya melakukan man g++dan (di bawah "Opsi untuk Menghubungkan") untuk opsi-l yang menyatakan: "Linker mencari daftar direktori standar untuk perpustakaan ..." dan "Direktori yang dicari meliputi beberapa direktori sistem standar ..." Apa itu direktori sistem standar?

Daryl Spitzer
sumber
1
Bukan duplikat, tetapi dijawab oleh Apa itu paket * -devel? .
Troubadour
Anda benar tentang -devkonvensi penamaan. Anda juga dapat menggunakan synapticmanajer paket untuk membuat daftar semua paket yang namanya mengandung libssl - menelusuri daftar itu dan uraiannya mungkin memberi Anda petunjuk.
crazyscot
1
Saya tahu pertanyaan ini sudah sangat mati sekarang, tetapi karena saya baru-baru ini menemukannya saya pikir orang lain juga mungkin. Jika Anda ingin mendaftar semua paket yang mirip dengan nama tertentu, saya ingin menggunakan> pencarian aptitude <STRING> Tidak memerlukan tingkat hak akses root untuk menjalankan pencarian.
Evan Larkin
2
hanya untuk menambah pernyataan Evan, versi terbaru dari Ubuntu datang tanpa perintah aptitude yang tersedia. pencarian apt-cache <packname> bekerja dengan cara yang sama (hampir) sekarang.
Andy
3
Sebagai jawaban atas pembaruan Anda, Anda bisa melakukannyaapt-cache search package-name
TheDoctor

Jawaban:

492

Anda ingin menginstal paket pengembangan, yaitu libssl-dev:

sudo apt-get install libssl-dev
Niki Yoshiuchi
sumber
1
Tapi ini bukan versi yang diinginkannya (1.0.0), yang tidak dikemas untuk 10,04. Lihat jawaban ini untuk 1.0.0: stackoverflow.com/questions/3153114/…
nealmcb
Ah, panggilan yang bagus. Saya hanya memperhatikan pada saat itu bahwa ia mencoba menggunakan perpustakaan pengembangan tetapi tidak menginstal paket -dev. Saya bahkan tidak memperhatikan nomor versi.
Niki Yoshiuchi
Ini adalah referensi yang tepat di sini: technologyskill.ga/install-openssl-manual-on-linux atau howtoforge.com/tutorial/... perpustakaan dan file header ditemukan di bawah direktori yang sama setelah instalasi: / usr / local / ssl
MickaelT
2
apt installuntuk dist ubuntu baru
AtachiShadow
1
@ GeorgeSp Saya kira begitu, tetapi masih lebih "alami" untuk membangunnya di direktori khusus menggunakan instruksi ini stackoverflow.com/a/49578644/7315276
ɛIc_ↄIз
29

apt-get install libssl-dev

Yann Ramin
sumber
15

Bagaimana saya bisa mengetahuinya sendiri (selain mengajukan pertanyaan ini di sini)? Dapatkah saya memberitahu apt-get untuk mendaftar semua paket, dan menerima ssl? Atau apakah saya perlu mengetahui konvensi penamaan "lib * -dev"?

Jika Anda terhubung dengan -lfooperpustakaan maka kemungkinan besar libfoo.so. Perpustakaan itu sendiri mungkin merupakan bagian dari libfoopaket, dan tajuknya ada dalam libfoo-devpaket seperti yang Anda temukan.

Beberapa orang menggunakan GUI "synaptic" app ( sudo synaptic) untuk (mencari dan) menginstal paket, tetapi saya lebih suka menggunakan baris perintah. Satu hal yang membuatnya lebih mudah untuk menemukan paket yang tepat dari baris perintah adalah fakta yang apt-getmendukung penyelesaian bash.

Coba ketikkan sudo apt-get install libssllalu tekan tabuntuk melihat daftar nama paket yang cocok (yang dapat membantu ketika Anda perlu memilih versi yang benar dari paket yang memiliki banyak versi atau variasi lain yang tersedia).

Penyelesaian bash sebenarnya sangat berguna ... misalnya, Anda juga bisa mendapatkan daftar perintah yang apt-getmendukung dengan mengetik sudo apt-getdan kemudian menekan tab.

Steve Lemke
sumber
Ubuntu dapat meringankan rasa sakit bagi orang-orang sejak itu menjadi masalah selama bertahun-tahun. Mereka bisa alias openssl-devuntuk libssl-devtetapi mereka memilih untuk tidak.
jww
7

Saya menemukan solusi terperinci di sini: Instal OpenSSL Secara Manual di Linux

Dari posting blog ...:

Langkah-langkah untuk mengunduh, mengkompilasi, dan menginstal adalah sebagai berikut (Saya menginstal versi 1.0.1g di bawah; silakan ganti "1.0.1g" dengan nomor versi Anda):

Langkah - 1: Mengunduh OpenSSL:

Jalankan perintah seperti di bawah ini:

$ wget http://www.openssl.org/source/openssl-1.0.1g.tar.gz

Juga, unduh hash MD5 untuk memverifikasi integritas file yang diunduh hanya untuk keperluan varifacation. Di folder yang sama tempat Anda mengunduh file OpenSSL dari situs web:

$ wget http://www.openssl.org/source/openssl-1.0.1g.tar.gz.md5
$ md5sum openssl-1.0.1g.tar.gz
$ cat openssl-1.0.1g.tar.gz.md5

Langkah - 2: Ekstrak file dari paket yang diunduh:

$ tar -xvzf openssl-1.0.1g.tar.gz

Sekarang, masukkan direktori tempat paket diekstraksi seperti di sini adalah openssl-1.0.1g

$ cd openssl-1.0.1g

Langkah - 3: Konfigurasi OpenSSL

Jalankan perintah di bawah ini dengan kondisi opsional untuk mengatur awalan dan direktori tempat Anda ingin menyalin file dan folder.

$ ./config --prefix=/usr/local/openssl --openssldir=/usr/local/openssl

Anda dapat mengganti "/ usr / local / openssl" dengan jalur direktori tempat Anda ingin menyalin file dan folder. Tetapi pastikan saat melakukan langkah-langkah ini memeriksa semua pesan kesalahan pada terminal.

Langkah - 4: Kompilasi OpenSSL

Untuk mengkompilasi openssl Anda perlu menjalankan 2 perintah: make, make install seperti di bawah ini:

$ make

Catatan: periksa apakah ada pesan kesalahan untuk keperluan verifikasi.

Langkah -5: Menginstal OpenSSL:

$ sudo make install

Atau tanpa sudo,

$ make install

Itu dia. OpenSSL telah berhasil diinstal. Anda dapat menjalankan perintah versi untuk melihat apakah itu berfungsi atau tidak seperti di bawah ini:

$ /usr/local/openssl/bin/openssl version

OpenSSL 1.0.1g 7 Apr 2014

Mann
sumber
1
Untuk kelengkapan Anda harus menyertakan verifikasi tanda tangan PGP untuk memastikan bahwa tanda tangan file valid. Seperti di gnupg.org/download/integrity_check.html dan openoffice.org/download/checksums.html#pgp_linux
djondal
5

Cara lain untuk menginstal perpustakaan openssl dari kode sumber di Ubuntu, ikuti langkah-langkah di bawah ini, di sini WORKDIRadalah direktori kerja Anda:

sudo apt-get install pkg-config
cd WORKDIR
git clone https://github.com/openssl/openssl.git
cd openssl
./config
make
sudo make install
# Open file /etc/ld.so.conf, add a new line: "/usr/local/lib" at EOF
sudo ldconfig
BH Xie
sumber
4

Anda menginginkan openssl-develpaket itu. Setidaknya saya pikir itu -develdi Ubuntu. Mungkin -dev. Itu salah satu dari keduanya.

jonescb
sumber
1
Keduanya sudo apt-get install openssl-devdan sudo apt-get install openssl-develmengembalikan "E: Tidak dapat menemukan paket ..."
Daryl Spitzer
6
Rupanya libssl-dev seperti yang dikatakan orang lain. Saya tidak menggunakan Ubuntu, jadi saya tidak terbiasa dengan nama paket.
jonescb
7
Openssl-devel adalah apa yang saya butuhkan untuk CentOS 6. sudo yum install openssl-devel*
Banjer
5
Mari kita jujur: penamaan ini menyebalkan :)
mlvljr
baik, penamaan ini menyebalkan :) - tapi tetap saja itu adalah standar penamaan terbaik yang bisa kita miliki ... tetapi seseorang benar-benar HARUS akhirnya mulai mengajar ini di sekolah "dasar-dasar IT" di SEMUA sekolah di dunia.
Filip OvertoneSinger Rydlo
0

Sebagai aturan umum, ketika di Debian atau Ubuntu dan Anda kehilangan file pengembangan (atau file lainnya dalam hal ini), gunakan apt-fileuntuk mencari tahu paket mana yang menyediakan file itu:

~ apt-file search openssl/bio.h
android-libboringssl-dev: /usr/include/android/openssl/bio.h
libssl-dev: /usr/include/openssl/bio.h
libwolfssl-dev: /usr/include/cyassl/openssl/bio.h
libwolfssl-dev: /usr/include/wolfssl/openssl/bio.h

Melihat sekilas setiap paket yang dikembalikan oleh perintah, menggunakan apt showakan memberi tahu Anda di antara paket mana yang Anda cari:

~ apt show libssl-dev
Package: libssl-dev
Version: 1.1.1d-2
Priority: optional
Section: libdevel
Source: openssl
Maintainer: Debian OpenSSL Team <pkg-openssl-devel@lists.alioth.debian.org>
Installed-Size: 8,095 kB
Depends: libssl1.1 (= 1.1.1d-2)
Suggests: libssl-doc
Conflicts: libssl1.0-dev
Homepage: https://www.openssl.org/
Tag: devel::lang:c, devel::library, implemented-in::TODO, implemented-in::c,
 protocol::ssl, role::devel-lib, security::cryptography
Download-Size: 1,797 kB
APT-Sources: http://ftp.fr.debian.org/debian unstable/main amd64 Packages
Description: Secure Sockets Layer toolkit - development files
 This package is part of the OpenSSL project's implementation of the SSL
 and TLS cryptographic protocols for secure communication over the
 Internet.
 .
 It contains development libraries, header files, and manpages for libssl
 and libcrypto.

N: There is 1 additional record. Please use the '-a' switch to see it
Vincent Fourmond
sumber
-3

sudo apt-get install libcurl4-openssl-dev

Nursnaaz
sumber