moby / hyperkit

A toolkit for embedding hypervisor capabilities in your application
BSD 2-Clause "Simplified" License
3.61k stars 327 forks source link

Failure to install following the instructions: qcow dependencies could not be met #241

Open fedorov opened 5 years ago

fedorov commented 5 years ago

I am following instructions here:

https://github.com/moby/hyperkit#building

and get this error:

$ opam install uri qcow.0.10.3 conduit.1.0.0 lwt.3.1.0 qcow-tool mirage-block-unix.2.9.0 conf-libev logs fmt mirage-unix prometheus-app
The following dependencies couldn't be met:
  - qcow-tool → qcow >= 0.10.4
  - qcow-tool → sha = 1.9 → ocaml < 4.06.0
      base of this switch (use `--unlock-base' to force)
Your request can't be satisfied:
  - No available version of qcow satisfies the constraints

No solution found, exiting
ijc commented 5 years ago

Based on #240 I think you might need:

$ brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/72ce8812eaa33abe23533dfa021b51351a6b9c3e/Formula/opam.rb

instead of the brew install opam in the docs, @djs55 does that sound right/plausible/likely?

djs55 commented 5 years ago

Yes indeed, that should work.

I've not got a suitable machine to hand. @fedorov could you see if it works for you and let me know? I can make a PR to update the docs.

fedorov commented 5 years ago

Thanks for the quick response!

I uninstalled opam that I installed following the current instructions, and then installed from the package you referenced above. Then I did opam init

OPAM has already been initialized.[ERROR] /Users/fedorov/.opam reports a newer OPAM version, aborting.

I then removed ~/.opam, and re-ran opam init:

Checking for available remotes: rsync and local, git.
  - you won't be able to use mercurial repositories unless you install the hg command on your system.
  - you won't be able to use darcs repositories unless you install the darcs command on your system.

=-=- Fetching repository information =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
[default] synchronized from https://opam.ocaml.org
[NOTE] The repository 'default' will be *permanently* redirected to https://opam.ocaml.org/1.2.2 (opam-version < "2.0~")
[default] synchronized from https://opam.ocaml.org/1.2.2

=-=- Gathering sources =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

=-=- Processing actions -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
∗  installed base-bigarray.base
∗  installed base-threads.base
∗  installed base-unix.base
Done.

In normal operation, OPAM only alters files within ~/.opam.

During this initialisation, you can allow OPAM to add information to two
other files for best results. You can also make these additions manually
if you wish.

If you agree, OPAM will modify:

  - ~/.zshrc (or a file you specify) to set the right environment
    variables and to load the auto-completion scripts for your shell (zsh)
    on startup. Specifically, it checks for and appends the following line:

    . /Users/fedorov/.opam/opam-init/init.zsh > /dev/null 2> /dev/null || true

  - ~/.ocamlinit to ensure that non-system installations of `ocamlfind`
    (i.e. those installed by OPAM) will work correctly when running the
    OCaml toplevel. It does this by adding $OCAML_TOPLEVEL_PATH to the list
    of include directories.

If you choose to not configure your system now, you can either configure
OPAM manually (instructions will be displayed) or launch the automatic setup
later by running:

   opam config setup -a

Do you want OPAM to modify ~/.zshrc and ~/.ocamlinit?
(default is 'no', use 'f' to name a file other than ~/.zshrc)
    [N/y/f] y

User configuration:
  Generating ~/.ocamlinit.
  ~/.zshrc is already up-to-date.
Global configuration:
  Updating ~/.opam/opam-init/init.sh
  Updating ~/.opam/opam-init/init.zsh
  Updating ~/.opam/opam-init/init.csh
  Updating ~/.opam/opam-init/init.fish
# To setup the new switch in the current shell, you need to run:
eval `opam config env`

This also did not generate any errors:

$ eval `opam config env`

However, opam install is still failing:

$ opam install uri qcow.0.10.3 conduit.1.0.0 lwt.3.1.0 qcow-tool mirage-block-unix.2.9.0 conf-libev logs fmt mirage-unix prometheus-app
The following dependencies couldn't be met:
  - qcow-tool -> qcow = 0.10.4
  - qcow-tool -> sha = 1.9
Your request can't be satisfied:
  - Conflicting version constraints for qcow
  - sha.1.9 is not available because your system doesn't comply with ocaml-version < "4.06.0".

No solution found, exiting
djs55 commented 5 years ago

Thanks for the update. It looks like the system OCaml compiler is too new for some of the older dependencies. Try

~ $ opam switch 4.05.0
~ $ eval $(opam config env)

to downgrade, and then try reinstalling the dependencies.

On Tue, Jan 8, 2019 at 7:48 PM Andrey Fedorov notifications@github.com wrote:

Thanks for the quick response!

I uninstalled opam that I installed following the current instructions, and then installed from the package you referenced above. Then I did opam init

OPAM has already been initialized.[ERROR] /Users/fedorov/.opam reports a newer OPAM version, aborting.

I then removed ~.opam, and re-run opam init:

Checking for available remotes: rsync and local, git.

  • you won't be able to use mercurial repositories unless you install the hg command on your system.
  • you won't be able to use darcs repositories unless you install the darcs command on your system.

=-=- Fetching repository information =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

[default] synchronized from https://opam.ocaml.org

[NOTE] The repository 'default' will be permanently redirected to https://opam.ocaml.org/1.2.2 (opam-version < "2.0~")

[default] synchronized from https://opam.ocaml.org/1.2.2

=-=- Gathering sources =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

=-=- Processing actions -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

∗ installed base-bigarray.base

∗ installed base-threads.base

∗ installed base-unix.base

Done.

In normal operation, OPAM only alters files within ~/.opam.

During this initialisation, you can allow OPAM to add information to two

other files for best results. You can also make these additions manually if you wish.

If you agree, OPAM will modify:

  • ~/.zshrc (or a file you specify) to set the right environment

    variables and to load the auto-completion scripts for your shell (zsh)

    on startup. Specifically, it checks for and appends the following line:

    . /Users/fedorov/.opam/opam-init/init.zsh > /dev/null 2> /dev/null || true

  • ~/.ocamlinit to ensure that non-system installations of ocamlfind

    (i.e. those installed by OPAM) will work correctly when running the

    OCaml toplevel. It does this by adding $OCAML_TOPLEVEL_PATH to the list

    of include directories.

If you choose to not configure your system now, you can either configure

OPAM manually (instructions will be displayed) or launch the automatic setup

later by running:

opam config setup -a

Do you want OPAM to modify ~/.zshrc and ~/.ocamlinit?

(default is 'no', use 'f' to name a file other than ~/.zshrc)

[N/y/f] y

User configuration:

Generating ~/.ocamlinit.

~/.zshrc is already up-to-date.

Global configuration:

Updating ~/.opam/opam-init/init.sh

Updating ~/.opam/opam-init/init.zsh

Updating ~/.opam/opam-init/init.csh

Updating ~/.opam/opam-init/init.fish

To setup the new switch in the current shell, you need to run:

eval opam config env

This also did not generate any errors:

$ eval opam config env

However, opam install is still failing:

$ opam install uri qcow.0.10.3 conduit.1.0.0 lwt.3.1.0 qcow-tool mirage-block-unix.2.9.0 conf-libev logs fmt mirage-unix prometheus-app

The following dependencies couldn't be met:

  • qcow-tool -> qcow = 0.10.4

  • qcow-tool -> sha = 1.9 Your request can't be satisfied:

  • Conflicting version constraints for qcow

  • sha.1.9 is not available because your system doesn't comply with ocaml-version < "4.06.0".

No solution found, exiting

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/moby/hyperkit/issues/241#issuecomment-452428600, or mute the thread https://github.com/notifications/unsubscribe-auth/AAMHuvM_hLFFcbBWUfIb0hOjPn1HpXInks5vBPYfgaJpZM4Z0Tvh .

fedorov commented 5 years ago

Thank you! I confirm after those steps I was able to proceed with

$ opam install uri qcow.0.10.3 conduit.1.0.0 lwt.3.1.0 qcow-tool mirage-block-unix.2.9.0 conf-libev logs fmt mirage-unix prometheus-app