Haskell Stack で依存ライブラリのバージョンを固定したい
Stack において、package.yaml
の dependencies
に書く依存パッケージのライブラリをマイナーバージョンまで含めてぴったり固定したいです。
たとえば Shelly の現在の最新バージョンは 1.8.1 ですが、1.8.0 に依存したいとします。このとき package.yaml
に次のように書いても stack build
をすると Shelly 1.8.1 に依存しようとしているような表示が出てしまいます。
dependencies:
- base >= 4.7 && < 5
- shelly == 1.8.0
>stack build
Error: While constructing the build plan, the following exceptions were encountered:
In the dependencies for shelly-1.8.1:
unix needed, but the stack configuration has no specified version (latest matching version
is 2.7.2.2)
needed due to foo-0.1.0.0 -> shelly-1.8.1
(以下略)
(補足:Shelly は 1.8.1 においてうっかり unix パッケージに依存してしまい、Windows 環境下でビルドできなくなりました。このため上のエラーが出ています。1.8.0 は unix に依存していないのでこのエラーは出ません)
shelly == 1.8.0.*
や shelly >= 1.8.0 && < 1.8.1
と他の書き方を試しても同じ結果となりました。どうすれば特定のバージョンに正確に依存できるのでしょうか?
環境情報
- Windows 10, cmd.exe
- Stack Version 1.9.1, Git revision f9d0042c141660e1d38f797e1d426be4a99b2a3c (6168 commits) x86_64 hpack-0.31.0
- resolver: lts-12.13
詳細な再現手順
>stack new foo
>cd foo
>open package.yaml
(dependencies を編集)
>stack build