Как мне установить библиотеки 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.

Но я думаю, что пакет openssl не включает библиотеку. Я получаю эти ошибки на 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

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

Я выполнил man g++(и в разделе «Параметры связывания») параметр -l, в котором говорится: «Компоновщик ищет стандартный список каталогов для библиотеки ...» и «В найденные каталоги входят несколько стандартных системных каталогов ...» Что это за стандартные системные каталоги?

Дэрил Спитцер
источник
1
Не совсем дубликат, но ответили что такое * -devel пакеты? ,
Трубадур
Вы правы насчет -devсоглашения об именах. Вы также можете использовать synapticменеджер пакетов, чтобы вывести список всех пакетов, имена которых содержат libssl - просмотр этого списка и их описания, вероятно, дадут вам подсказку.
Crazyscot
1
Я знаю, что этот вопрос уже совсем мертв, но так как я недавно нашел его, я думаю, что кто-то еще мог бы. Если вы хотите перечислить все пакеты, похожие на определенное имя, я хотел бы использовать> aptitude search <STRING>. Для запуска поиска не требуется уровень привилегий root.
Эван Ларкин
2
просто чтобы добавить к заявлению Эвана, последние версии Ubuntu идут без доступной команды aptitude. 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. Я даже не заметил номер версии.
Ники Йошиути
Это правильная ссылка здесь: technologyskill.ga/install-openssl-manually-on-linux или howtoforge.com/tutorial/… библиотеки и заголовочные файлы находятся в одном каталоге после установки: / usr / local / ssl
MickaelT
2
apt installдля нового
дистрибутива
1
@ GeorgeSp Я так думаю, но все еще более «естественно» построить их в пользовательском каталоге, используя эту инструкцию stackoverflow.com/a/49578644/7315276
ɛIc_ↄIз
15

Как я мог понять это для себя (кроме как задать этот вопрос здесь)? Могу ли я как-то сказать apt-get перечислить все пакеты и grep для ssl? Или мне нужно знать соглашение об именах "lib * -dev"?

Если вы связываетесь с, -lfooто библиотека скорее всего libfoo.so. Сама библиотека, вероятно, является частью libfooпакета, а заголовки находятся в libfoo-devпакете, как вы обнаружили.

Некоторые люди используют «synaptic» app ( sudo synaptic) с графическим интерфейсом для (определения местоположения и) установки пакетов, но я предпочитаю использовать командную строку. Одна вещь, которая облегчает поиск нужного пакета из командной строки, это тот факт, что apt-getподдерживается завершение bash.

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

Завершение Bash на самом деле очень полезно ... например, вы также можете получить список команд, которые apt-getподдерживаются, набрав, sudo apt-getа затем нажав tab.

Стив Лемке
источник
Ubuntu может облегчить боль для людей, так как это было проблемой в течение многих лет. Они могли бы псевдоним openssl-devна libssl-devно они предпочитают не.
17
7

Я нашел подробное решение здесь: вручную установить OpenSSL на Linux

Из сообщения в блоге ...:

Для загрузки, компиляции и установки выполните следующие действия (я устанавливаю версию 1.0.1g ниже; пожалуйста, замените «1.0.1g» номером вашей версии):

Шаг 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. Это один из двух.

jonescb
источник
1
И то, sudo apt-get install openssl-devи другое: sudo apt-get install openssl-devel«E: Не удалось найти посылку ...»
Дэрил Спитцер
6
Очевидно, это libssl-dev, как говорили другие. Я не использую Ubuntu, поэтому я не знаком с именами пакетов.
Jonescb
7
Openssl-devel был тем, что мне было нужно для CentOS 6. sudo yum install openssl-devel*
Banjer
5
Давайте будем честными: это наименование - отстой :)
mlvljr
ну, это присвоение имен - отстой :) - но все же это лучший стандарт именования, который мы можем иметь ... но кто-то действительно ДОЛЖЕН, наконец, начать преподавать это по школьному предмету "Основы ИТ" во ВСЕХ школах мира.
Филип ОбертонеСингер Ридло
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
Винсент Фурмонд
источник