I installed Elixir on “Windows Subsystem for Linux”.
I am getting a weird error that I am unable to troubleshoot.
I ran the mix tutorial on creating a minimal module “kv”.
mix compile
Unchecked dependencies for environment dev:
* dep_from_git (https://github.com/elixir-lang/my_dep.git)
the dependency is not available, run "mix deps.get"
* dep_from_hexpm (Hex package)
the dependency is not available, run "mix deps.get"
** (Mix) Can't continue due to errors on dependencies
I then ran mix deps.get as suggested.
mix deps.get
* Updating dep_from_git (https://github.com/elixir-lang/my_dep.git)
fatal: could not read Username for 'https://github.com': Inappropriate ioctl for device
** (Mix) Command "git --git-dir=.git fetch --force --quiet --progress" failed
Hmmm. Could you share what the contents of your mix.exs looks like?
If you’re following this tutorial, it should look like this:
defmodule KV.MixProject do
use Mix.Project
def project do
[
app: :kv,
version: "0.1.0",
elixir: "~> 1.6-dev",
start_permanent: Mix.env == :prod,
deps: deps()
]
end
# Run "mix help compile.app" to learn about applications.
def application do
[
extra_applications: [:logger]
]
end
# Run "mix help deps" to learn about dependencies.
defp deps do
[
# {:dep_from_hexpm, "~> 0.3.0"},
# {:dep_from_git, git: "https://github.com/elixir-lang/my_dep.git", tag: "0.1.0"},
]
end
end
Notice that the two lines inside of deps should be commented out (starting with a #):
defp deps do
[
# {:dep_from_hexpm, "~> 0.3.0"},
# {:dep_from_git, git: "https://github.com/elixir-lang/my_dep.git", tag: "0.1.0"},
]
end
It seems like maybe the two lines in this function might not be commented out in your case?
That’s a more-or-less wild guess and I’m not sure if that’s the issue.
It would probably tell you for the dep_from_hex if it came thus far.
But for the git ressource it can’t find it publicly, so it assumes it were a repository only available behind a user login.
I’m not sure about the ioctl thing, but afaik it is some kernel tool providing at least parts of the /sys filesystem, not sure how the WSL plays along with it.
It would have tried to use SSH instead then, but I’m not sure if or how the error message would have been different then.
But usually one does not use SSH for git deps, at least not for publicly available repositories, as you would lock everyone out that doesn’t own an account on the source.
Hex itself is only a platform that provides package hosting. A client to use this platform is available as a plugin for mix and rebar3. One can also download packages through the website manually.
As the API is public (but not necessarily documented) everyone could in theory, build his own plugin for other build tools in the BEAM ecosystem or even for buildtools outside of it.
I prefer make for building and cmake for configuration, but most “modern” languages come with their own incompatible way of building very often, so I tend to simply use whatever is mainstream or official for a given language.