rebar 构建rel小问题

本文详细介绍了使用rebar构建rel发行版时遇到路径未定义错误的解决方案,通过修改reltool.config文件添加库路径,避免了无效时间的浪费。包括基本的rebar命令使用技巧,适用于不同版本的用户。

这两天被网上的一些文档坑惨了,白白浪费了许多时间。使用rebar构建rel发行版时,需要对生成的reltool.config进行修改,添加库的路径,不然会一直报路径未定义的错误。修改后的相关内容如下:


这点在网上很多人是没有提到的,可能是因为版本不同,出现的问题也会不太一样,希望我把这个问题列出来对大家会有所帮助。至于如何用rebar创建应用程序、编译及测试,比较基本的命令,基本不会有问题。


构建流程中,`make`、`make rel` 和 `make z rel` 是针对不同目标的构建命令,分别用于不同的用途,其区别主要体现在构建范围、输出内容和适用场景上。 ### 构建命令的区别 - **`make`** 该命令通常用于执行 Makefile 中定义的默认目标。在大多数项目中,这表示编译源代码并生成可执行文件或库文件。它不会涉及完整的发布版本打包流程,也不会包含插件配置文件、运行时依赖等资源[^1]。 例如,在 EMQX 插件开发中,`make` 主要用于编译 Erlang 源码模块,并生成 `.beam` 文件,但并不会将插件配置文件复制到最终的发布目录中[^3]。 - **`make rel`** 该命令用于构建完整的发布版本(release),会执行一系列额外步骤来打包所有必要的组件,包括应用程序、依赖项、插件、配置文件以及启动脚本等。最终生成一个独立的运行时目录结构(如 `_build/emqx/rel/emqx/`),其中包含 `bin/`, `lib/`, `etc/` 等关键路径。这是部署服务端应用所必需的过程,尤其对于需要加载插件的系统来说,`make rel` 能确保插件相关的配置文件被正确放置到指定目录下[^4]。 - **`make z rel`** 在某些构建系统中(如 rebar3 或特定的 Erlang 项目),`make z rel` 表示以“zip”格式生成发布包。与 `make rel` 类似,它也会构建完整的发布版本,但最终输出的是一个压缩包(如 `.tar.gz` 或 `.zip` 格式),便于分发和部署。未执行 `make z rel` 可能会导致缺少打包后的可部署文件,影响自动化部署流程或生产环境的安装过程[^5]。 ### 是否会导致问题 如果仅执行了 `make` 或 `make rel`,而没有执行 `make z rel`,是否会导致问题取决于具体的部署需求: - 如果只需要本地运行或调试,则 `make rel` 已经足够,因为 `_build/emqx/rel/emqx/` 目录下已有完整的运行时环境。 - 如果需要将服务打包成压缩文件进行远程部署或版本管理,则必须执行 `make z rel`,否则将无法获得可用于发布的压缩包文件[^6]。 --- ### 示例 Makefile 片段(简化版) ```makefile all: @echo "Compiling core modules..." erlc -o ebin/ src/*.erl rel: @echo "Building release..." rebar3 as emqx release zrel: @echo "Zipping release..." cd _build/emqx/rel && tar czf emqx.tar.gz emqx ``` --- ### 总结对比表 | 功能 | `make` | `make rel` | `make z rel` | |------|--------|------------|--------------| | 默认行为 | 编译核心模块 | 构建完整发布版本 | 打包发布为压缩包 | | 输出内容 | `.beam` 文件 | 完整运行时目录 | 压缩包形式的发布包 | | 是否适合部署 | 否 | 是 | 是 | | 是否涉及插件打包 | 否 | 是 | 是 | ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值