无法在 LinuxMint 上构建 openssl-1.0.2n

Unable to build openssl-1.0.2n on LinuxMint

我正在尝试更新我的 OpenVPNOpenSSL。 在将 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

从您的输出来看,您需要 运行 所有三个命令作为 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 在外部库中用于 link 的,这意味着测试无法找到 openssl 。所以应该在前面的步骤中构建

最后,以 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