1

当我尝试使用 Distillery 升级正在运行的 Phoenix 应用程序时,构建失败并显示以下消息:

Generated teamgenik app
==> Assembling release..
==> Building release my_app:0.10.7 using environment prod
==> Generated .appup for artificery 0.2.6 -> 0.4.1
==> Generated .appup for db_connection 2.0.3 -> 2.0.6
==> Generated .appup for decimal 1.6.0 -> 1.7.0
==> Generated .appup for ecto 3.0.6 -> 3.0.8
==> Generated .appup for ecto_sql 3.0.4 -> 3.0.0
==> Generated .appup for phoenix 1.4.0 -> 1.4.3
==> Generated .appup for phoenix_html 2.13.0 -> 2.13.2
==> Generated .appup for phoenix_pubsub 1.1.1 -> 1.1.2
==> Generated .appup for plug 1.7.1 -> 1.7.2
==> Generated .appup for plug_cowboy 2.0.1 -> 2.0.2
==> Generated .appup for teamgenik 0.10.6 -> 0.10.7
==> Generated .appup for telemetry 0.3.0 -> 0.2.0
==> Release failed with multiple errors:
    Multiply defined module: 'Elixir.Telemetry'

我运行这个应用程序几个月,我已经成功升级了好几次。这一次,我想将 Phoenix 的版本从 1.4.0 提升到 1.4.3。

我在 Elixir 论坛上阅读了这篇文章:

https://elixirforum.com/t/distillery-build-error-multiply-defined-module-elixir-collectable-ecto-adapters-sql-stream/19489

我试过mix deps.clean --allmix release.clean. 有什么建议或建议吗?

更新

我注意到一个奇怪的现象。当我在 上执行bin/my_app upgrade 0.10.7RELEASE_ROOT_DIR,我收到此错误消息(注意双引号和它们之间的逗号):

Could not locate code path for release-my_app","0.10.6!
4

1 回答 1

1

虽然我无法检测到问题的根本原因,但我设法通过以下方式升级了我的应用程序。

  1. 停止应用程序。
  2. 删除发布目录。
  3. 重新创建发布目录。
  4. 从源目录中删除_build目录。
  5. 使用 部署应用程序mix release

换句话说,我放弃了主机代码交换并选择重新部署我的应用程序。

看来我的问题与这些问题有关:

两者都已经关闭。我认为我的问题是由于旧版 Distillery 安装的一些错误,我以后不会遇到它。

于 2019-04-03T00:45:24.677 回答