关于erlang:elixir-0079-erlang-版本升级-22-24

42次阅读

共计 592 个字符,预计需要花费 2 分钟才能阅读完成。

前几天降级了 elixir 版本,明天想着罗唆把 erlang 的版本也降级一下好了。据说 OTP24 的性能有很大晋升。降级之后一编译,果然又报了好些正告 & 谬误,咱们来一一解决。

1

** (UndefinedFunctionError) function :crypto.block_encrypt/3 is undefined or private, use crypto:crypto_one_time/4 or crypto:crypto_init/3 + crypto:crypto_update/2 + crypto:crypto_final/1 instead

首先是 :crypto 模块的 api 变了,变更的起因据说是 OpenSSL 的 api 变更。http://erlang.org/doc/apps/cr… 还好在网上搜寻了一番,找到了解决的办法。

应用 :crypto.crypto_one_time 函数代替即可,最初一个参数是一个布尔值,true 代表加密,false 代表解密。具体用法还是看文档吧。

2

另外 :crypto.hmac 函数也没有了。对立改用 :crypto.mac(:hmac, ...)。具体参考函数文档。手动替换一下就能够了。

3

因为下面的这些起因,一些依赖库也用不了了。好在 elixir 社区罕用的库保护都很频繁,到 hex.pm 上找到最近版本,更新一下就好了。

4

这样,一次欢快的 erlang 大版本升级就实现了。

正文完
 0