ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Erlang版本管理终极指南:用erlang.mk内置Kerl一条命令搞定所有OTP版本

Erlang版本管理终极指南:用erlang.mk内置Kerl一条命令搞定所有OTP版本 Erlang版本管理终极指南用erlang.mk内置Kerl一条命令搞定所有OTP版本【免费下载链接】erlang.mkA build tool for Erlang that just works.项目地址: https://gitcode.com/gh_mirrors/er/erlang.mkerlang.mk 是一款 开箱即用 的 Erlang 构建工具其内置的 Kerl 集成让你可以一条命令管理所有 Erlang/OTP 版本自动下载、编译并安装指定的 OTP 版本让团队每一位成员的构建环境完全一致。本教程将带你快速掌握 OTP 版本锁定、多版本并存以及 CI 多版本测试的完整玩法告别 在我机器上能跑 的经典难题。为什么需要统一的 Erlang/OTP 版本管理写 Erlang 代码时几乎每个团队都会遇到这样的场景开发环境是 OTP 27生产环境是 OTP 25行为不一致新同事装错 OTP 版本依赖编译失败CI 只测一个版本上线才发现兼容性问题。erlang.mk 内置了 Kerl一个自动化构建 Erlang/OTP 的脚本的支持把 下载 → 编译 → 安装 → 切换到指定版本 全部收敛到make一条命令里。核心实现位于 core/kerl.mk官方说明文档在 doc/src/guide/kerl.asciidoc。一键锁定 OTP 版本ERLANG_OTP 配置方法这是最常用也最简单的一步在项目的 Makefile 中include erlang.mk之前设置ERLANG_OTP变量即可ERLANG_OTP OTP-20.0.4 include erlang.mk保存后再次运行makeerlang.mk 会自动拉取 Kerl 到临时目录_build/kerl用 Git tag 从 Erlang/OTP 官方仓库检出对应版本并完整编译安装到~/erlang/OTP-20.0.4并把该版本的bin目录注入PATH后续所有erlc、erl命令都走这个版本。整个过程只需等待编译完成无需手动下载源码、配置依赖或改环境变量。版本号怎么写erlang.mk 使用 Erlang/OTP 的 Git tag 作为版本标识。新版本形如OTP-20.0.4.4是补丁发布更老的版本则形如OTP_R16B03甚至出现过修复关键问题的OTP_R16B03-1。写 Makefile 前建议先确认官方发布列表。自动使用最新已安装 OTPLATEST_ERLANG_OTP如果不想锁死具体版本只想 用本机装好的最新 OTP可以设置LATEST_ERLANG_OTP。其实现逻辑在 core/kerl.mk 第 45-50 行对安装目录下的版本做排序和过滤排除master和OTP_R%旧命名自动选出最新的一个作为ERLANG_OTP。这在持续构建脚本中非常实用。CI 多版本测试一条命令跑遍所有 OTP开源库往往要兼容多个 OTP 版本。erlang.mk 的 CI 插件plugins/ci.mk基于同一套 Kerl 机制让你声明式地跑遍所有目标版本CI_OTP OTP-19.0.7 OTP-19.3.6.2 OTP-20.0.4然后执行make ci -kci目标会依次为每个版本构建 OTP若尚未构建、清理项目、注入对应PATH并运行测试-k参数保证某个版本失败时仍继续测试其余版本。此外还可以扩展目标ci-setup每个版本测试前的钩子例如ci-setup:: distclean可强制重新拉取依赖ci-extra每个版本测试后的钩子例如ci:: dialyze可在 CI 末尾运行 Dialyzer。更多细节见 doc/src/guide/ci.asciidoc。自定义 Kerl 配置安装目录、源码仓库与编译参数所有 Kerl 变量都可以通过在 Makefile 中导出变量来覆盖常用的有变量作用默认值KERL_INSTALL_DIROTP 版本安装根目录$(HOME)/erlangKERL_GITKerl 脚本仓库地址kerl 官方仓库OTP_GITErlang/OTP 源码仓库erlang/otp 官方仓库KERL_COMMITKerl 检出的分支或提交masterKERL_MAKEFLAGS传给 OTP 编译的 make 参数空例如把版本装到项目目录内注意必须写绝对路径erlang.mk 不会自动展开变量export KERL_INSTALL_DIR $(CURDIR)/erlang常见问题与注意事项构建慢是正常的首次make需要完整编译 Erlang/OTP耗时较长之后该版本已存在直接复用不会重复编译判断逻辑见 core/kerl.mk 第 61-65 行。与.ONESHELL不兼容有用户报告版本锁定功能与 GNU Make 的.ONESHELL特性存在兼容问题如遇到诡异报错可先检查这一点。多个版本可并存每个 OTP 版本安装为独立子目录如~/erlang/OTP-20.0.4不同项目可各自指向不同版本互不干扰。清理 Kerl 缓存make distclean会触发distclean-kerl目标移除临时拉取的 Kerl 目录。小结借助 erlang.mk 内置的 Kerl 集成你只需一个变量就能锁定 OTP 版本、一条命令就能完成多版本 CI 测试从 手动折腾环境 升级为 声明式版本管理。建议现在就在项目的 Makefile 中加上ERLANG_OTP试试——这也是 Erlang 项目团队协作的强烈推荐实践。【免费下载链接】erlang.mkA build tool for Erlang that just works.项目地址: https://gitcode.com/gh_mirrors/er/erlang.mk创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表