基于rebar3的Relup实现Erlang应用升级时遇--relname缺失错误
解决rebar3 relup报错"Option --relname is missing"
问题原因
rebar3 relup 生成升级包时,必须明确知道发布名称(relname)以及要升级的旧版本号,要么通过命令行参数传递,要么在rebar.config中预先配置。你的情况是未指定这两个必要信息中的发布名称。
解决方案
方法1:命令行直接指定参数
从输出里的relapp-1.0.12可确认你的发布名称是relapp,假设要从旧版本1.0.11升级到当前的1.0.12,执行以下命令:
rebar3 relup --relname relapp --upfrom relapp-1.0.11
--relname:指定发布名称(即生成的release目录名)--upfrom:指定要升级的旧版本完整名称(格式为发布名称-版本号)
方法2:在rebar.config中配置relx参数
如果不想每次命令行输入参数,可在项目根目录的rebar.config里添加relx配置,提前定义发布信息和升级来源:
{relx, [ {release, {relapp, "1.0.12"}, [relapp, sasl]}, % 定义当前发布的名称、版本和包含的应用 {dev_mode, false}, {include_erts, true}, {extended_start_script, true}, {upfrom, "1.0.11"} % 指定默认升级的旧版本号 ]}.
配置完成后,直接运行:
rebar3 relup
即可自动读取配置中的发布名称和旧版本信息,生成升级包。
验证
执行命令后,若未报错,会在_build/default/rel/relapp目录下生成relup文件,这就是升级所需的脚本。
内容的提问来源于stack exchange,提问作者孙海城
相关产品推荐
相关产品推荐

