Jak zainstalować biblioteki OpenSSL na Ubuntu?

235

Próbuję zbudować kod na Ubuntu 10.04 LTS, który używa OpenSSL 1.0.0. Kiedy uruchamiam make, wywołuje g ++ z opcją „-lssl”. Źródło obejmuje:

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

Prowadziłem:

$ 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.

Ale chyba pakiet openssl nie zawiera biblioteki. Otrzymuję te błędy przy make:

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

Jak zainstalować bibliotekę OpenSSL C ++ na Ubuntu 10.04 LTS?

Zrobiłem man g++a (w „Opcjach łączenia”) dla opcji -l stwierdza: „Linker przeszukuje standardową listę katalogów dla biblioteki ...” i „Przeszukiwane katalogi zawierają kilka standardowych katalogów systemowych ...” Jakie są te standardowe katalogi systemowe?

Daryl Spitzer
źródło
1
Niezupełnie duplikat, ale odpowiedź: Co to są pakiety * -devel? .
Troubadour,
Masz rację co do -devkonwencji nazewnictwa. Możesz także użyć synapticmenedżera pakietów, aby wyświetlić listę wszystkich pakietów, których nazwy zawierają libssl - przeglądanie tej listy i ich opisów prawdopodobnie dałoby ci wskazówkę.
crazyscot,
1
Wiem, że to pytanie jest już zupełnie martwe, ale odkąd je niedawno znalazłem, sądzę, że ktoś inny też może. Jeśli chcesz wyświetlić listę wszystkich pakietów, które są podobne do określonej nazwy, lubię użyć> aptitude search <STRING> Nie wymaga poziomu uprawnień roota do uruchomienia wyszukiwania.
Evan Larkin,
2
aby dodać do stwierdzenia Evana, najnowsze wersje Ubuntu nadchodzą bez dostępnego polecenia aptitude. wyszukiwanie apt-cache <nazwa_pakietu> działa teraz w ten sam sposób (prawie).
Andy
3
W odpowiedzi na twoją aktualizację możesz zrobićapt-cache search package-name
TheDoctor

Odpowiedzi:

492

Chcesz zainstalować pakiet programistyczny, którym jest libssl-dev:

sudo apt-get install libssl-dev
Niki Yoshiuchi
źródło
1
Ale nie jest to wersja, której chciał (1.0.0), która nie jest spakowana dla 10.04. Zobacz tę odpowiedź dla wersji 1.0.0: stackoverflow.com/questions/3153114/…
nealmcb
Ach, dobra rozmowa. Zauważyłem tylko wtedy, gdy próbował użyć bibliotek programistycznych, ale nie instalowałem pakietu -dev. Nawet nie zauważyłem numeru wersji.
Niki Yoshiuchi
To jest właściwe odniesienie tutaj: technologyskill.ga/install-openssl-manually-on-linux lub howtoforge.com/tutorial/… biblioteki i pliki nagłówkowe znajdują się w tym samym katalogu po instalacji: / usr / local / ssl
MickaelT
2
apt installdla nowego dist ubuntu
AtachiShadow
1
@GeorgeSp Myślę, że tak, ale nadal bardziej „naturalne” jest budowanie ich w niestandardowym katalogu za pomocą tej instrukcji stackoverflow.com/a/49578644/7315276
ɛIc_ↄIз
29

apt-get install libssl-dev

Yann Ramin
źródło
15

Jak mogłem to sobie wymyślić (inne niż zadawanie tutaj tego pytania)? Czy mogę w jakiś sposób powiedzieć apt-get, aby wyświetlił listę wszystkich pakietów i grep dla ssl? Czy muszę znać konwencję nazewnictwa „lib * -dev”?

Jeśli łączysz się z -lfoobiblioteką, biblioteka jest prawdopodobnie libfoo.so. Sama biblioteka jest prawdopodobnie częścią libfoopakietu, a nagłówki znajdują się w libfoo-devpakiecie, jak odkryłeś.

Niektóre osoby używają GUI „synaptic” app ( sudo synaptic) do (lokalizowania i) instalowania pakietów, ale ja wolę korzystać z wiersza poleceń. Jedną z rzeczy, która ułatwia znalezienie odpowiedniego pakietu z wiersza poleceń, jest fakt, że apt-getobsługuje uzupełnianie bash.

Spróbuj wpisać, sudo apt-get install libssla następnie naciśnij przycisk, tababy wyświetlić listę pasujących nazw pakietów (co może pomóc, gdy trzeba wybrać poprawną wersję pakietu, który ma wiele wersji lub innych dostępnych wariantów).

Uzupełnianie bash jest w rzeczywistości bardzo przydatne ... na przykład możesz również uzyskać listę poleceń, które apt-getobsługuje, wpisując, sudo apt-geta następnie naciskając tab.

Steve Lemke
źródło
Ubuntu może złagodzić ból ludzi, ponieważ był to problem od lat. Oni mogli alias openssl-devdo libssl-devale nie wybrać.
jww
7

Znalazłem tu szczegółowe rozwiązanie: zainstaluj ręcznie OpenSSL w systemie Linux

Z posta na blogu ...:

Kroki pobierania, kompilacji i instalacji są następujące (instaluję wersję 1.0.1g poniżej; zamień „1.0.1g” na numer wersji):

Krok - 1: Pobieranie OpenSSL:

Uruchom polecenie jak poniżej:

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

Pobierz również skrót MD5, aby zweryfikować integralność pobranego pliku w celu samej zmiany. W tym samym folderze, w którym pobrałeś plik OpenSSL ze strony internetowej:

$ 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

Krok - 2: Wyodrębnij pliki z pobranego pakietu:

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

Teraz wpisz katalog, do którego rozpakowany jest pakiet, tak jak tutaj: openssl-1.0.1g

$ cd openssl-1.0.1g

Krok - 3: Konfiguracja OpenSSL

Uruchom poniższe polecenie z opcjonalnym warunkiem, aby ustawić prefiks i katalog, w którym chcesz skopiować pliki i folder.

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

Możesz zastąpić „/ usr / local / openssl” ścieżką do katalogu, w którym chcesz skopiować pliki i foldery. Pamiętaj jednak, aby podczas wykonywania tych kroków sprawdzić komunikat o błędzie na terminalu.

Krok - 4: Kompilowanie OpenSSL

Aby skompilować openssl, musisz uruchomić 2 polecenie: make, make install jak poniżej:

$ make

Uwaga: sprawdź, czy nie ma komunikatu o błędzie w celu weryfikacji.

Krok -5: Instalowanie OpenSSL:

$ sudo make install

Lub bez sudo,

$ make install

Otóż ​​to. OpenSSL został pomyślnie zainstalowany. Możesz uruchomić polecenie wersji, aby sprawdzić, czy zadziałało, czy nie, jak poniżej:

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

OpenSSL 1.0.1g 7 Apr 2014

Mann
źródło
1
Dla kompletności należy dołączyć weryfikację podpisu PGP, aby upewnić się, że podpis plików jest prawidłowy. Jak w gnupg.org/download/integrity_check.html i openoffice.org/download/checksums.html#pgp_linux
djondal
5

Innym sposobem zainstalowania biblioteki openssl z kodu źródłowego na Ubuntu jest wykonanie poniższych kroków, oto WORKDIRkatalog roboczy:

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
źródło
4

Chcesz openssl-develpaczkę. Przynajmniej myślę, że jest -develna Ubuntu. Może być -dev. To jeden z dwóch.

jonescb
źródło
1
Zarówno sudo apt-get install openssl-devi sudo apt-get install openssl-develzwróć „E: Nie można znaleźć pakietu ...”
Daryl Spitzer
6
Najwyraźniej jest to libssl-dev, jak powiedzieli inni. Nie używam Ubuntu, więc nie znam nazw pakietów.
jonescb
7
Otwarcie-devel było tym, czego potrzebowałem do CentOS 6. sudo yum install openssl-devel*
Banjer
5
Bądźmy szczerzy: ta nazwa jest do bani :)
mlvljr
no cóż, to nazewnictwo jest do bani :) - ale nadal jest to najlepszy standard nazewnictwa, jaki możemy mieć ... ale ktoś naprawdę POWINIEN wreszcie zacząć uczyć tego przedmiotu na szkoleniu „podstawy informatyki” we WSZYSTKICH szkołach na świecie.
Filip Overtone Piosenkarz Rydlo
0

Zasadniczo, jeśli korzystasz z Debiana lub Ubuntu i brakuje Ci pliku programistycznego (lub dowolnego innego pliku w tym zakresie), użyj, apt-fileaby dowiedzieć się, który pakiet zawiera ten plik:

~ 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

Szybki rzut oka na każdy pakiet zwrócony przez komendę, używając apt showpowie ci, który z pakietów jest tym, którego szukasz:

~ 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
źródło
-3

sudo apt-get install libcurl4-openssl-dev

Nursnaaz
źródło