кабал: Обнаружены отсутствующие зависимости:

#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