运行mix edeliver build release production --verbose
A remote command failed on:
deploy@80.111.111.80
但是当我登录服务器时,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
似乎工作正常。什么是Edeliver找到我的Elixir安装有困难?我使用asdf版本管理器来安装Elixir和Erlang。
答案 0 :(得分:4)
我在. $HOME/.asdf/asdf.sh
的底部添加了~/.profile
。
答案 1 :(得分:3)
我已经使用asdf
安装了Elixir和Erlang,但遇到了同样的问题。
显然,asdf
仅在交互模式下执行,这意味着如果我通过ssh
连接到服务器,则可以运行它并照常使用mix
,但是如果来自另一个我尝试执行命令的机器(通过不物理登录并与终端进行交互)然后失败,并显示相同的错误。
有两个可能的解决方案:
.bashrc
文件第一个由@Gus提出的解决方案在技术上是可行的,但是您将被困在机器中特定的erlang / elixir版本中,版本之间的交换是不可能的,更新和修复程序将不可用尽快
对我来说,拥有多个具有不同版本的Elixir项目的人,此解决方案是“不行”。
第二种解决方案是手动编辑~/.bashrc
文件。默认情况下,除非您以交互方式(手动)登录,否则系统将不会加载mix
,用户环境变量和其他内容。要更改此行为,您可以注释以下代码(或将其删除)
# If not running interactively, don't do anything
case $- in
*i*) ;;
*) return;;
esac
此解决方案是肮脏的,但是如果您使用它,则可以完全访问所有内容,就像手动访问一样。
这些解决方案的问题在于它们不使用Edeliver,而只是使用Distillery。
另一个问题是,第二个解决方案非常笨拙,因此我不确定这是一个好习惯(更不用说潜在的安全隐患了。)
希望有帮助!
答案 2 :(得分:-1)