- 发布升级文件
发布升级文件
要定义如何在某个发布的新旧版本之间进行升级和降级,我们要创建一个发布升级文件,或简称 relup 文件。
该文件无须手工创建,可以使用 systools:make_relup/3,4 进行生成。使用相关版本的 .rel 、 .app 和 .appup 文件作为输入。除去了哪些应用应该被添加或者删除和哪些应用应该被升级或降级。它的指令都是从 .appup 文件中获得并按照正确的顺序转换成单独的一个低级指令的列表。
relup 文件相对简单,可以被手工创建。但记住它只能包含低级指令。
发布升级文件的语法和内容在 relup(4) 中有详细的阐述。
例如,继续前一节的例子。我们有一个 ch_app 的新版本“2”和一个 .appup 文件。我们还需要一个 .rel 文件的新版本。这时该文件叫做 ch_rel-2.rel 发布版本串由“A”改成了“B”:
- {release,
- {"ch_rel", "B"},
- {erts, "5.3"},
- [{kernel, "2.9"},
- {stdlib, "1.12"},
- {sasl, "1.10"},
- {ch_app, "2"}]
- }.
现在可以生成 relup 文件了:
- 1> systools:make_relup("ch_rel-2", ["ch_rel-1"], ["ch_rel-1"]).
- ok
会生成一个 relup 文件,它包含了如何从版本“A”(“ch_rel-1”)升级到版本“B”(“ch_rel-2”)的指令,以及如何从版本“B”降级到版本“A”的指令。
注意旧的和新的版本的 .app 和 .rel 文件必须在代码路径中, .appup 和(新的) .beam 文件也必须是。它还可以通过参数 path 扩展代码路径:
- 1> systools:make_relup("ch_rel-2", ["ch_rel-1"], ["ch_rel-1"],
- [{path,["../ch_rel-1",
- "../ch_rel-1/lib/ch_app-1/ebin"]}]).
- ok