Як встановити бібліотеки OpenSSL на Ubuntu?


235

Я намагаюся створити якийсь код на Ubuntu 10.04 LTS, який використовує OpenSSL 1.0.0. Коли я запускаю make, він викликає g ++ за допомогою параметра "-lssl". Джерело включає:

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

Я побіг:

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

Але я думаю, що пакет opensl не включає бібліотеку. Я отримую ці помилки під час виготовлення:

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

Як встановити бібліотеку OpenSSL C ++ на Ubuntu 10.04 LTS?

Я зробив a man g++(у розділі "Параметри зв’язування") для параметра -l в ньому зазначено: "Linker шукає стандартний список каталогів для бібліотеки ..." та "Пошук шуканих каталогів включає декілька стандартних системних каталогів ..." Що це за стандартні системні каталоги?


1
Не зовсім дублікат, але на нього відповіли Що таке * -devel пакети? .
Трубадур

Ви маєте рацію щодо -devконвенції про іменування. Ви також можете скористатись synapticменеджером пакунків, щоб перелічити всі пакунки, імена яких містять libssl - перегляд цього списку та їх описи, ймовірно, дадуть вам підказку.
crazyscot

1
Я знаю, що це питання на сьогоднішній день уже досить мертве, але, оскільки я нещодавно знайшов його, я думаю, що ще хтось може. Якщо ви хочете перерахувати всі пакети, схожі на певне ім’я, я люблю використовувати> aptitude search <STRING> Для запуску пошуку не потрібен рівень привілеїв root.
Еван Ларкін

2
просто додати до заяви Евана, останні версії Ubuntu надходять без доступної команди придатності. apt-cache search <packname> працює так само (майже) зараз.
Енді

3
У відповідь на ваше оновлення ви можете зробитиapt-cache search package-name
TheDoctor

Відповіді:


492

Ви хочете встановити пакет розробки, який є libssl-dev:

sudo apt-get install libssl-dev

1
Але це не та версія, яку він хотів (1.0.0), яка не пакується за 10.04. Дивіться цей відповідь для версії 1.0.0: stackoverflow.com/questions/3153114 / ...
nealmcb

Ах, гарний дзвінок. Я лише помітив у той час, що він намагався використовувати бібліотеки розробок, але не встановив пакет -dev. Я навіть не помітив номер версії.
Нікі Йошіучі

Це правильна посилання тут: technologyyskill.ga/install-openssl-manually-on-linux або howtoforge.com/tutorial/… бібліотеки та файли заголовків знаходяться в одному каталозі після встановлення: / usr / local / ssl
MickaelT

2
apt installдля нового dist ubuntu
AtachiShadow

1
@GeorgeSp Я думаю , що це так, але це все ще більш «природним» , щоб побудувати їх в призначеній для користувача директорії , використовуючи цю інструкцію stackoverflow.com/a/49578644/7315276
ɛIc_ↄIз


15

Як я міг це зрозуміти для себе (окрім того, як тут не задавати це питання)? Чи можу я якось сказати apt-get перелічити всі пакунки та grep для ssl? Або мені потрібно знати умову іменування "lib * -dev"?

Якщо ви зв’язуєтеся, -lfooто, швидше за все, бібліотекаlibfoo.so . Сама бібліотека, ймовірно, є частиною libfooпакету, а заголовки є в libfoo-devпакеті, як ви виявили.

Деякі користуються додатком GUI "синаптичний" (sudo synaptic ) для (пошуку та) встановлення пакетів, але я вважаю за краще використовувати командний рядок. Одне, що полегшує пошук потрібного пакету з командного рядка, це той факт, що apt-getпідтримує завершення bash.

Спробуйте ввести sudo apt-get install libssl а потім натисніть, tabщоб переглянути список відповідних назв пакета (що може допомогти, коли вам потрібно вибрати правильну версію пакета, яка має кілька версій або інших варіантів).

Завершення Bash насправді дуже корисне ... наприклад, ви також можете отримати список команд, який apt-getпідтримує, ввівши sudo apt-getта натиснувши tab.


Ubuntu може полегшити біль людям, оскільки це було проблемою протягом багатьох років. Вони могли б псевдонім openssl-devна libssl-devале вони вважають за краще не.
jww

7

Тут я знайшов детальне рішення: Встановити OpenSSL вручну на Linux

З публікації щоденника ...:

Крок до завантаження, компіляції та встановлення виконаний наступним чином (я встановлюю версію 1.0.1 г нижче; замініть "1.0.1 г" на номер версії):

Крок - 1: Завантаження OpenSSL:

Виконайте команду, як показано нижче:

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

Також завантажте хеш MD5, щоб перевірити цілісність завантаженого файлу лише для цілей варіації. У тій же папці, де ви завантажили файл OpenSSL з веб-сайту:

$ 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

Крок - 2: Вилучення файлів із завантаженого пакету:

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

Тепер введіть каталог, з якого витягується пакунок, як ось, ось openssl-1.0.1g

$ cd openssl-1.0.1g

Крок - 3: Конфігурація OpenSSL

Виконайте команду нижче з додатковою умовою, щоб встановити префікс і каталог, куди потрібно скопіювати файли та папку.

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

Ви можете замінити "/ usr / local / openssl" на шлях до каталогу, куди потрібно скопіювати файли та папки. Але переконайтеся, що виконуючи ці дії, перевіряйте наявність повідомлення про помилку на терміналі.

Крок - 4: Складання OpenSSL

Для компіляції openssl вам потрібно буде виконати 2 команди: make, make install як нижче:

$ make

Примітка. Перевірте наявність повідомлення про помилку з метою перевірки.

Крок -5: Встановлення OpenSSL:

$ sudo make install

Або без судо,

$ make install

Це воно. OpenSSL успішно встановлено. Ви можете запустити команду версії, щоб побачити, чи працює вона чи ні, як показано нижче:

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

OpenSSL 1.0.1g 7 Apr 2014


1
Для повноти слід включити перевірку підпису PGP, щоб переконатися, що підпис файлів є дійсним. Як і в gnupg.org/download/integrity_check.html та openoffice.org/download/checksums.html#pgp_linux
djondal

5

Інший спосіб встановлення бібліотеки openssl з вихідного коду на Ubuntu, наступні кроки нижче, ось WORKDIRваш робочий каталог:

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

4

Ви хочете openssl-develпакет. Принаймні, я думаю, що це -develна Ubuntu. Може бути -dev. Це одна з двох.


1
І те, sudo apt-get install openssl-devі sudo apt-get install openssl-develповернення "E: Не вдалося знайти пакет ..."
Daryl Spitzer

6
Мабуть, це libssl-dev, як сказали інші. Я не використовую Ubuntu, тому я не знайомий з назвами пакетів.
jonescb

7
Openssl-devel було те, що мені було потрібно для CentOS 6. sudo yum install openssl-devel*
Banjer

5
Будемо чесними: ця назва називається відстійною :)
mlvljr

ну, ця назва називається відстійною :) - але все-таки це найкращий стандарт іменування, який ми можемо мати ... але хтось дійсно ДОЛЖЕН би нарешті почати викладати цей предмет в школах "Основи ІТ" у ВСІХ школах світу.
Філіп OvertoneSinger Rydlo

0

Як правило, коли в Debian або Ubuntu і у вас відсутній файл розробки (або будь-який інший файл з цього питання), використовуйте, apt-fileщоб визначити, який пакет надає цей файл:

~ 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

Швидкий погляд на кожен з пакетів, які повертаються командою, за допомогою команди apt showпідкаже, який із пакетів - той, який ви шукаєте:

~ 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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.