当我运行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。
发布于 2018-12-16 13:18:44
我在~/.profile的底部添加了. $HOME/.asdf/asdf.sh。
发布于 2018-11-27 16:40:15
也许是asdf?
我已经使用asdf安装了Elixir和Erlang,并且我遇到了与您相同的问题。
显然,asdf只在交互模式下执行,这意味着如果我通过ssh连接到服务器,我可以像往常一样运行它并使用mix,但如果我试图从另一台机器执行命令(通过不以物理方式登录并与终端交互),那么它将失败,并出现与您相同的错误。
可能的解决方案
对于此问题,有两种可能的解决方案:
.bashrc文件本机安装Erlang和Elixir
第一个解决方案,由@Gus提出,从技术上讲,work.However,你会被困在你的机器上的特定erlang/elixir版本,在版本之间交换是不可能的,更新和修复也不会那么快。
对于我,一个有几个不同版本的Elixir项目的人来说,这个解决方案是一个很大的“禁忌”。
更改.bashrc文件
第二种解决方案是手动编辑~/.bashrc文件。默认情况下,除非您以交互方式(手动)登录,否则系统不会加载mix、用户环境变量和其他内容。要更改此行为,您可以注释以下代码(或将其删除)
# If not running interactively, don't do anything
case $- in
*i*) ;;
*) return;;
esac这个解决方案是脏的,但如果您使用它,您将获得对所有内容的完全访问权限,就像您手动访问一样。
问题
这些解决方案的问题是他们不使用Edeliver,他们只是使用Distillery。
另一个问题是,第二种解决方案相当老套,所以我不确定它是不是一个好的实践(更不用说潜在的安全隐患了)。
希望它能帮上忙!
https://stackoverflow.com/questions/46142825
复制相似问题