Running 'mix deps.get' tells me "fatal: could not read Username for 'https://github.com': Inappropriate ioctl for device"

Hi !

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

I am kind of stuck what to do :frowning:

Cheers !

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.

2 Likes

Hi @IRLeif !

Thank you for the quick reply.

Yes you are right ! I uncommented them, is that not possible ?

I uncommented them because I wanted to add some other modules that I wanted to use from hex.pm.

This is what is looks like verbatim :

  defp deps do
    [
      # {:cortex, "~> 0.1", only: [:dev, :test]},
      {:dep_from_hexpm, "~> 0.3.0"},
      {:dep_from_git, git: "https://github.com/elixir-lang/my_dep.git", tag: "0.1.0"}
    ]
  end

Those 2 are just example entries. They do not actually exist on GitHub nor hex.

2 Likes

@NobbZ thanks ! but the error doen’t seem to be :

Package not found

Why is it trying to access github using username and password ? and why is the ioctl module not correctly configured for Ubuntu ?

I am sorry I just quite curious regarding how things are setup.

Do you know how to install hex ? I tried looking at the docs page :

It it apt-get install hex ?

Or is hex only part mix ?

Cheers !

Hi !

I think I answered some of my questions.

mix deps.get
Resolving Hex dependencies...
Dependency resolution completed:
New:
  cortex 0.5.0
  file_system 0.2.6
* Getting cortex (Hex package)
* Getting file_system (Hex package)

so is hex only available through mix ?

1 Like

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.

1 Like

if instead of https:// i gave it a ssh address I am assuming it wouldn’t have complained ?

Anyway thx for all the help :smile:

cheers !

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.

1 Like

@NobbZ

What build system do you prefer ?

As far as I can see mix is the closest to npm - which I have found to consistently be really good.

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.

1 Like