共计 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 大版本升级就实现了。
正文完