无法在 LinuxMint 上构建 openssl-1.0.2n
Unable to build openssl-1.0.2n on 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
从您的输出来看,您需要 运行 所有三个命令作为 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
我正在尝试更新我的 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
从您的输出来看,您需要 运行 所有三个命令作为 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