mix-deps.get:Hex被安装到错误的长生不老药版本中



这是我第一次使用命令:

$ mix deps.get

这就是输出:

Could not find Hex, which is needed to build dependency :ecto
Shall I install Hex? (if running non-interactively, use "mix local.hex --force") [Yn] Y
* creating /Users/7stud/.kiex/mix/archives/elixir-1.4.1/hex-0.18.1
Resolving Hex dependencies...
Dependency resolution completed:
New:
connection 1.0.4
db_connection 1.1.3
decimal 1.5.0
ecto 2.2.10
poolboy 1.5.1
postgrex 0.13.5
* Getting ecto (Hex package)
* Getting postgrex (Hex package)
* Getting connection (Hex package)
* Getting db_connection (Hex package)
* Getting decimal (Hex package)
* Getting poolboy (Hex package)

~/elixir_programs/friends$ iex
Erlang/OTP 20 [erts-9.3] [source] [64-bit] [smp:4:4] [ds:4:4:10] [async-threads:10] [hipe] [kernel-poll:false]
Interactive Elixir (1.6.6) - press Ctrl+C to exit (type h() ENTER for help)
iex(1)> 
^C$ which iex
/Users/7stud/.asdf/shims/iex
$ which elixir
/Users/7stud/.asdf/shims/elixir
$ asdf current
elixir         1.6.6   (set by /Users/7stud/.tool-versions)
erlang         20.3    (set by /Users/7stud/.tool-versions)
$ asdf list elixir
1.6.6
$ asdf list erlang
20.3

我用asdf包管理器安装了otp 20.3elixir 1.6.6

^C$ which iex
/Users/7stud/.asdf/shims/iex
$ which elixir
/Users/7stud/.asdf/shims/elixir
$ asdf current
elixir         1.6.6   (set by /Users/7stud/.tool-versions)
erlang         20.3    (set by /Users/7stud/.tool-versions)
$ asdf list elixir
1.6.6
$ asdf list erlang
20.3

我不在乎我用什么软件包管理器。如何确保像Hex这样的东西安装在elixir 1.6.6中?我甚至在我的系统上找不到长生不老药1.4.1:

$ elixir -v
Erlang/OTP 20 [erts-9.3] [source] [64-bit] [smp:4:4] [ds:4:4:10] [async-threads:10] [hipe] [kernel-poll:false]
Elixir 1.6.6 (compiled with OTP 19)

那么Hex安装程序是如何找到长生不老药1.4.1的呢?

如果我删除.bash_profile中安装asdf shims的线路,然后打开一个新的终端窗口,这就是我得到的:

~$ which elixir
/Users/7stud/.kiex/elixirs/elixir-1.4.1/bin/elixir
~$ which mix
/Users/7stud/.kiex/elixirs/elixir-1.4.1/bin/mix
~$ 

我在谷歌上搜索了.kiex,看起来我一定在某个时候安装了elixir的kiex版本管理器。

我的.bash_profile中也有一些行安装了kiex垫片。我注释掉了kiex的行,取消了asdf垫片的行,打开了一个新的终端窗口,并再次尝试了混合命令:

$mix deps.get 
Could not find Hex, which is needed to build dependency :ecto
Shall I install Hex? (if running non-interactively, use "mix local.hex --force") [Yn] Y
* creating /Users/7stud/.asdf/installs/elixir/1.6.6/.mix/archives/hex-0.18.1
Resolving Hex dependencies...
Dependency resolution completed:
Unchanged:
connection 1.0.4
db_connection 1.1.3
decimal 1.5.0
ecto 2.2.10
poolboy 1.5.1
postgrex 0.13.5
All dependencies up to date

成功。

下一个问题:

~/elixir_programs/friends$ mix exto.gen.repo -r Friends.Repo
==> connection
Compiling 1 file (.ex)
Generated connection app
==> friends
Could not find "rebar", which is needed to build dependency :poolboy
I can install a local copy which is just used by Mix
Shall I install rebar? (if running non-interactively, use "mix local.rebar --force") [Yn] 

但是,在另一个终端窗口中:

$ which rebar
/usr/local/bin/rebar
~$ rebar --version
rebar 2.6.4 19 20170625_072305 git 2.6.4-6-g2a52f60
~$ which rebar3
/usr/local/bin/rebar3
~$ rebar3 --version
rebar 3.0.0-beta.4+build.3189.ref21ae314 on Erlang/OTP 20 Erts 9.3

为什么mix找不到我的钢筋?

从您的评论来看,kiex似乎与asdf冲突。

.bash_profile中删除对kiex的引用,asdf垫片应能正常工作。

相关内容

  • 没有找到相关文章

最新更新