#haskell #elm #cabal
Вопрос:
Я пытаюсь установить программу Haskell (которая сама по себе является компилятором для другого языка программирования) из репозитория Github.
Компилятор Elm сам по себе является программой на Хаскелле, и я хотел бы скомпилировать ее из исходного кода:
$ cabal configure
Resolving dependencies...
Warning: solver failed to find a solution:
Could not resolve dependencies:
trying: elm-0.19.1 (user goal)
next goal: zip-archive (dependency of elm-0.19.1)
Dependency tree exhaustively searched.
Trying configure anyway.
Configuring elm-0.19.1...
cabal: Encountered missing dependencies:
SHA -any,
ansi-terminal ==0.8.*,
ansi-wl-pprint >=0.6.8 amp;amp; <0.7,
containers >=0.5.8.2 amp;amp; <0.6,
Если я попытаюсь использовать другую команду, компьютер выполнит поиск другой версии языка программирования Elm.
$ cabal install elm
Resolving dependencies...
cabal: Could not resolve dependencies:
trying: Elm-0.13 (user goal)
trying: base-4.12.0.0/installed-4.1... (dependency of Elm-0.13)
next goal: transformers (dependency of Elm-0.13)
rejecting: transformers-0.5.6.2/installed-0.5..., transformers-0.6.0.2,
transformers-0.5.6.2, transformers-0.5.5.2, transformers-0.5.5.0,
transformers-0.5.4.0, transformers-0.5.2.0, transformers-0.5.1.0,
transformers-0.5.0.1, transformers-0.5.0.0 (conflict: Elm => transformers>=0.2
amp;amp; <0.5)
rejecting: transformers-0.4.3.0, transformers-0.4.2.0 (conflict:
У меня уже установлен Elm по всему миру, и я хотел бы установить локальную копию, которую я клонировал с Github. В документации кабал-клана мало что говорится.
Полезная информация:
$ ghc --version
The Glorious Glasgow Haskell Compilation System, version 8.6.5
$ cabal --version
cabal-install version 1.24.0.2
compiled using version 1.24.2.0 of the Cabal library
Пробуя разные вещи, возможно, подвергаясь риску:
$ cabal install --only-dependencies
Resolving dependencies...
internal error: could not construct a valid install plan.
The proposed (invalid) plan contained the following problems:
Package time is required by several packages, but they require inconsistent
versions:
package zip-archive-0.3.3 requires time-1.10
package snap-server-1.1.2.0 requires time-1.10
package snap-core-1.0.4.2 requires time-1.10
package io-streams-1.5.2.1 requires time-1.10
package http-client-0.6.4.1 requires time-1.10
package elm-0.19.1 requires time-1.10
package directory-1.3.6.2 requires time-1.10
package cookie-0.4.5 requires time-1.10
package HTTP-4000.3.16 requires time-1.10
package unix-2.7.2.2 requires time-1.8.0.2
Proposed plan:
Configured HTTP-4000.3.16 (.fake.HTTP-4000.3.16)
Configured SHA-1.6.4.4 (.fake.SHA-1.6.4.4)
Configured ansi-terminal-0.8.2 (.fake.ansi-terminal-0.8.2)
Configured ansi-wl-pprint-0.6.8.2 (.fake.ansi-wl-pprint-0.6.8.2)
Configured asn1-encoding-0.9.6 (.fake.asn1-encoding-0.9.6)
Configured asn1-parse-0.9.5 (.fake.asn1-parse-0.9.5)
Configured asn1-types-0.3.4 (.fake.asn1-types-0.3.4)
Ответ №1:
Ваш cabal
очень старый, и я настоятельно рекомендую вам обновить его.
Тем не менее… с cabal-1 вызов просто
cabal install
с » нет elm
» в конце. Запустите его из каталога, который вы клонировали с github, в котором есть файл с именем elm.cabal
или похожим-он автоматически найдет файл с расширением .cabal
и установит пакет, описанный внутри. cabal install
также позаботится об установке отсутствующих зависимостей.
С помощью modern cabal
и при условии , что исполняемый файл , указанный в .cabal
файле, называется elm
, я бы использовал
cabal run elm -- --args --for --elm --compiler
чтобы запустить компилятор во время тестирования, а затем
cabal install --exe
когда вы удовлетворены своими изменениями и хотите сделать исполняемый файл более доступным.
Комментарии:
1.Я перешел на
cabal 3.4
haskell.org/cabal/download.html