首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Edeliver/Distillery失败并显示"bash: line 10: mix: command not found“错误?

Edeliver/Distillery失败并显示"bash: line 10: mix: command not found“错误?
EN

Stack Overflow用户
提问于 2017-09-11 00:17:25
回答 2查看 2K关注 0票数 4

当我运行mix edeliver build release production --verbose时,我得到这个错误

代码语言:javascript
复制
A remote command failed on:
  deploy@80.111.111.80

但是当我登录到服务器时,Elixir (以及Mix)似乎安装得很好。

代码语言:javascript
复制
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。

EN

回答 2

Stack Overflow用户

发布于 2018-12-16 13:18:44

我在~/.profile的底部添加了. $HOME/.asdf/asdf.sh

票数 8
EN

Stack Overflow用户

发布于 2018-11-27 16:40:15

也许是asdf?

我已经使用asdf安装了Elixir和Erlang,并且我遇到了与您相同的问题。

显然,asdf只在交互模式下执行,这意味着如果我通过ssh连接到服务器,我可以像往常一样运行它并使用mix,但如果我试图从另一台机器执行命令(通过不以物理方式登录并与终端交互),那么它将失败,并出现与您相同的错误。

可能的解决方案

对于此问题,有两种可能的解决方案:

  1. 按照original documentation中的描述以本机方式安装erlang和elixir。
  2. 更改.bashrc文件

本机安装Erlang和Elixir

第一个解决方案,由@Gus提出,从技术上讲,work.However,你会被困在你的机器上的特定erlang/elixir版本,在版本之间交换是不可能的,更新和修复也不会那么快。

对于我,一个有几个不同版本的Elixir项目的人来说,这个解决方案是一个很大的“禁忌”。

更改.bashrc文件

第二种解决方案是手动编辑~/.bashrc文件。默认情况下,除非您以交互方式(手动)登录,否则系统不会加载mix、用户环境变量和其他内容。要更改此行为,您可以注释以下代码(或将其删除)

代码语言:javascript
复制
# If not running interactively, don't do anything
case $- in
    *i*) ;;
      *) return;;
esac

这个解决方案是脏的,但如果您使用它,您将获得对所有内容的完全访问权限,就像您手动访问一样。

问题

这些解决方案的问题是他们不使用Edeliver,他们只是使用Distillery。

另一个问题是,第二种解决方案相当老套,所以我不确定它是不是一个好的实践(更不用说潜在的安全隐患了)。

希望它能帮上忙!

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46142825

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档