Mas*_*son 4 elixir phoenix-framework edeliver distillery
运行时出现此错误 mix edeliver build release production --verbose
A remote command failed on:
deploy@80.111.111.80
Run Code Online (Sandbox Code Playgroud)
但是当我登录服务器时,Elixir(以及 Mix)似乎安装得很好。
ssh deploy@80.111.111.80
deploy@80.111.111.80:~$ mix -v
Erlang/OTP 20 [erts-9.0] [source] [64-bit] [smp:4:4] [ds:4:4:10] [async-threads:10] [hipe] [kernel-poll:false]
Mix 1.5.0
Run Code Online (Sandbox Code Playgroud)
它似乎工作正常。Edeliver 在查找 Elixir 安装时遇到问题是什么?我使用 asdf 版本管理器安装 Elixir 和 Erlang。
我已经安装了 Elixir 和 Erlang asdf,我遇到了和你一样的问题。
显然,asdf仅在交互模式下执行,这意味着如果我通过连接ssh到服务器,我可以运行它并mix照常使用,但如果从不同的机器我尝试执行命令(通过不物理登录并与终端交互) 然后它失败并出现与您相同的错误。
这个问题有两种可能的解决方案:
@Gus 提出的第一个解决方案在技术上是可行的。但是,您将被困在机器中的特定 erlang/elixir 版本中,版本之间的交换将是不可能的,更新和修复也不会那么快可用。
对于我这个拥有多个不同版本的 Elixir 项目的人来说,这个解决方案是一个很大的“禁忌”。
第二种解决方案是手动编辑您的~/.bashrc文件。默认情况下,除非您以交互方式(手动)登录,否则系统不会加载mix、用户环境变量和其他内容。要更改此行为,您可以注释以下代码(或将其删除)
# If not running interactively, don't do anything
case $- in
*i*) ;;
*) return;;
esac
Run Code Online (Sandbox Code Playgroud)
这个解决方案很脏,但如果你使用它,你就可以完全访问所有内容,就像手动访问一样。
这些解决方案的问题在于他们不使用 Edeliver,他们只是使用 Distillery。
另一个问题是,第二个解决方案非常笨拙,所以我不确定这是一个好的做法(更不用说潜在的安全隐患)。
希望能帮助到你!
| 归档时间: |
|
| 查看次数: |
1847 次 |
| 最近记录: |