2
votes

This is my first time using the command:

$ mix deps.get

This was the output:

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

I installed otp 20.3 and elixir 1.6.6 with the asdf package manager:

^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

I don't care what package manager I use. How can I make sure things like Hex are installed in elixir 1.6.6? I can't even find elixir 1.4.1 on my system:

$ 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)

so how did the Hex installer find elixir 1.4.1?

If I remove the lines in my .bash_profile that install the asdf shims, and then I open a new terminal window, this is what I get:

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

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

I searched google for .kiex, and it looks like I must have installed the kiex version manager for elixir at some point.

There were also some lines in my .bash_profile that installed kiex shims. I commented out the lines for kiex and uncommented the lines for the asdf shims, and I opened a new terminal window, and I tried the mix command again:

$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

Success.

Next problem:

~/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] 

But, in another terminal window:

$ 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

So, why can't mix find my rebar?

1
What's the output of which mix?Adam Millerchip
@AdamMillerchip, ~$ which mix => /Users/7stud/.asdf/shims/mix7stud
@AdamMillerchip, I found elixir 1.4.1. I added some more info to the bottom of my question.7stud
@AdamMillerchip, There were also some lines in my .bash_profile that installed kiex shims. I commented out the lines for kiex and uncommented the lines for the asdf shims, then $mix deps.get produced: 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, so I'm in business.7stud
Great. Looks like you worked it out, I posted an answer anyway ;-)Adam Millerchip

1 Answers

1
votes

From your comments, it looks like kiex is conflicting with asdf.

Remove the references to kiex from your .bash_profile, and the asdf shims should work correctly.