在 centos 中使用 kerl 安装 erlang 时出现加密错误
Posted
技术标签:
【中文标题】在 centos 中使用 kerl 安装 erlang 时出现加密错误【英文标题】:crypto error when installing erlang with kerl in centos 【发布时间】:2016-07-21 16:42:29 【问题描述】:我一直在尝试通过kerl安装erlang16。我收到以下错误:
Uncaught error in rebar_core: 'EXIT',
undef,
[crypto,start,[],[],
这一直是很多人之前遇到的问题,但这些解决方案都不适合我。
我是按照这个做的: Unable to install erlang on cent os 但失败了
如果我这样做了,crypto:start(),它不会返回我好的。有人可以帮忙吗。谢谢
错误信息:
1> crypto:start().
** exception error: undefined function crypto:start/0
2>
=ERROR REPORT==== 2-Apr-2016::07:28:13 ===
Unable to load crypto library. Failed with error:
"load_failed, Failed to load NIF library:
'/usr/local/lib/erlang/lib/crypto- 3.0/priv/lib/crypto.so: undefined symbol: EC_GROUP_new_curve_GF2m'"
OpenSSL might not be installed on this system.
=ERROR REPORT==== 2-Apr-2016::07:28:13 ===
The on_load function for module crypto returned error,
load_failed,
"Failed to load NIF library: '/usr/local/lib/erlang/lib/crypto-3.0/priv/lib/crypto.so: undefined symbol: EC_GROUP_new_curve_GF2m'"
这样做很好:
Eshell V5.10.2 (abort with ^G)
1> application:start(crypto).
ok
【问题讨论】:
***.com/q/20166216/409228 的重复,遗憾的是没有可接受的答案。 不是重复的,请看我的回答下方评论中的错误信息。 或者它可能是重复的,但这个问题和错误是特定于 CentOS 的。另一个问题包含不同的错误消息。要使其重复,您可能需要将此问题的详细信息添加到另一个问题。 应用程序可能正在启动,但crypto
模块是一个 Erlang NIF,直到您从 crypto
调用函数时才会加载。尝试拨打例如crypto:info_lib().
以查看它是否有效。它应该显示它正在使用的 OpenSSL 版本。
【参考方案1】:
您的 Erlang 是在没有 OpenSSL 的情况下构建的。从源代码构建 Erlang 时,未安装或启用 OpenSSL。构建 crypto
应用程序需要 OpenSSL。请参阅Erlang installation guide。
检查crypto
是否已构建的最简单方法就是像您一样尝试启动crypto
。
1> application:start(crypto).
ok
您可以尝试从Erlang Solutions 下载预编译版本吗?否则,您将需要找出为什么 kerl
没有选择 OpenSSL(如果已安装)。也许尝试验证configure
或编译日志。
【讨论】:
如果我直接从erlang.org安装(erlang r16b01)会有什么不同。 当然不是,只是在 erlang.org 上有非常有限的一组操作系统可供您下载安装程序。但是,如果您可以为您的系统找到一个软件包,那就没关系了。请注意,您可能需要单独安装 OpenSSL 才能正常工作。即使 Erlang 已使用 OpenSSL 编译,仍需要安装它才能使加密应用程序正常工作。 我做了 sudo yum install openssl-devel 然后从 erlang.org 安装了 erlang R16B01 问题仍然存在。 application:start(crypto) 返回正常,但 crypto:start() 失败。还有,先安装openssl,再安装erlang。application:start(crypto).
与 crypto:start().
相同。见github.com/erlang/otp/blob/OTP-18.3/lib/crypto/src/… 所以它已经在工作了。如果不是,请发布确切的错误消息。
无法加载加密库。失败并出现错误:“load_failed,无法加载 NIF 库:'/usr/local/lib/erlang/lib/crypto-3.0/priv/lib/crypto.so: undefined symbol: EC_GROUP_new_curve_GF2m'” OpenSSL 可能未安装在此系统。模块 crypto 的 on_load 函数返回 error, load_failed, "Failed to load NIF library: '/usr/local/lib/erlang/lib/crypto-3.0/priv/lib/crypto.so: undefined symbol: EC_GROUP_new_curve_GF2m'" ** 异常错误:未定义函数 crypto:start/0以上是关于在 centos 中使用 kerl 安装 erlang 时出现加密错误的主要内容,如果未能解决你的问题,请参考以下文章