Невозможно собрать openssl-1.0.2n на LinuxMint

Я пытаюсь обновить свои OpenVPN и OpenSSL. При обновлении openvpn до openvpn-2.4.4 я должен был сначала обновить свой openssl до последней версии openssl-1.0.2n

$ cd~
$ wget https://openvpn.net/index.php/download/openvpn-2.4.4.tar.gz
$ sudo tar -zvxf openvpn--2.4.4.tar.gz
$ cd openvpn-2.4.4
$ sudo ./configure
$ sudo make
$ sudo make install

Но когда я достигну ./configure выше, я столкнулся с проблемой устаревшей openssl, как я упоминал ранее (я думал, что обновление исправит это):

checking tap-windows.h presence... no
checking for tap-windows.h... no
checking whether TUNSETPERSIST is declared... yes
checking for setcon in -lselinux... no
checking for pam_start in -lpam... no
checking for PKCS11_HELPER... no
checking for OPENSSL... no
checking for SSL_CTX_new... no
configure: error: openssl check failed

Поэтому я попробовал следующие команды для обновления до последней версии openssl:

$ cd /usr/src
$ wget https://www.openssl.org/source/openssl-1.0.2n.tar.gz -O openssl-1.0.2n.tar.gz
$ tar -zxf openssl-1.0.2n.tar.gz
$ cd openssl-1.0.2n
$ ./config
$ sudo make
$ sudo make test
$ sudo make install
$ mv /usr/bin/openssl /root/
$ ln -s /usr/local/ssl/bin/openssl /usr/bin/openssl
$ openssl version

Когда я доберусь до make test, Я столкнулся с ошибкой компиляции. Я скопировал и вставил вывод моего терминала сюда, потому что этот вывод ОГРОМНЫЙ, ошибка внизу: pastebin

Любые предложения, как я могу пройти мимо этой проблемы?

RELEASE=18 sarah, EDITION=Cinnamon 32-bit, GRUB_TITLE=Linux Mint 18 Cinnamon 32-bit

1 ответ

Решение

Судя по вашему выводу, вам нужно запустить все три команды как sudo, и вы пропустили начальный make,

elliot@warmachine /usr/src/openssl-1.0.2n $ sudo ./config
...
elliot@warmachine /usr/src/openssl-1.0.2n $ make
...
/bin/sh: 1: cannot create buildinf.h: Permission denied
Makefile:58: recipe for target 'buildinf.h' failed

который терпит неудачу, поскольку у него нет разрешений на запись в каталог, что вызывает sudo make test потерпеть неудачу, потому что openssl не был собран:

/usr/bin/ld: cannot find -lssl
collect2: error: ld returned 1 exit status

-l{library_name} это что ld использует для связи во внешних библиотеках, что означает, что test не может найти openssl .so, который должен был быть собран на предыдущих шагах

Наконец, это плохая практика для сборки программного обеспечения как root. Моя рекомендация - создать его как непривилегированный пользователь, а затем установить как root.

$ cd ~
$ wget https://www.openssl.org/source/openssl-1.0.2n.tar.gz -O openssl-1.0.2n.tar.gz
$ tar -zxf openssl-1.0.2n.tar.gz
$ cd openssl-1.0.2n
$ ./config
$ make
$ make test
$ sudo make install
Другие вопросы по тегам