Haskell Stack package installation error

折月煮酒 提交于 2019-12-01 09:56:16

问题


user$: stack install dictionaries

Error: While constructing the build plan, the following exceptions were encountered:

In the dependencies for dictionaries-0.1.0.0:
    binary-0.8.3.0 must match >=0.7.5 && <0.8 (latest applicable is 0.7.6.1)
    time-1.6.0.1 must match >=1.5.0 && <1.6 (latest applicable is 1.5.0.1)

With the above command, I want to install the dictionaries package globally.

What are my options here? I plan to stack unpack dictionaries, and then modify the versions. But then how to install the modified 'local' package globally?

What's the best practices here?

Thanks


回答1:


Easiest one: Add allow-newer: true to stack.yaml

It would to be the solution in this case. It solves the upper version limitation problem like yours. But of course there is possibility of build failure.

Maybe possible one: Change resolver to latest nightly

That failure occurs sometimes on nightly snapshot. And usually repaired soon by library update and new nightly snapshot. If you are using old snapshot, change it to latest. Or waiting may be one of solution.

Most general one: Make dependency to modified local package

You can do it by adding the package path to stack.yaml packages:. Then stack will use it instead of snapshot one.

The way you want is probably not a good idea. Even if that's possible, how are you going to handle with the many version of snapshot case? Local dependencies should be specified to each package.




回答2:


With the above command, I want to install the dictionaries package globally.

(Preliminary note: by "globally", I will assume you mean globally for your user, as opposed to a system-wide installation.)

dictionaries is not in any Stackage snapshot. As far as I'm aware of, that means you cannot install it globally, as for libraries that is only an option if the package is in a snapshot. Cf. Stack issue #2656 -- while the planned feature described there sounds like what you are trying to do, there is a caveat:

Should also warn when it isn't used with --copy-bins, and if there are targets that don't have executables, as these both indicate a misunderstanding about how it works.

That being so, my suggestion is to install the package per-project, using the packages field with an extra-dep key -- that is, the "most general" solution in jeiea's answer.



来源:https://stackoverflow.com/questions/42142210/haskell-stack-package-installation-error

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!