2016-10-13 4 views
3

Я пытаюсь установить программу под названием clanki на Windows 10. В своем установочном документе говорится, что нужно использовать «cabal install clanki». Я загрузил cabal, затем ghc. Теперь я столкнулся с проблемой версии для пакета base.Как понизить базу с помощью каббала?

$ cabal install clanki 
Resolving dependencies... 
cabal.exe: Could not resolve dependencies: 
trying: clanki-1.2.7 (user goal) 
next goal: base (dependency of clanki-1.2.7) 
rejecting: base-4.9.0.0/installed-4.9... (conflict: clanki => base<=4.9.0) 
rejecting: base-4.9.0.0, base-4.8.2.0, base-4.8.1.0, base-4.8.0.0, 
base-4.7.0.2, base-4.7.0.1, base-4.7.0.0, base-4.6.0.1, base-4.6.0.0, 
base-4.5.1.0, base-4.5.0.0, base-4.4.1.0, base-4.4.0.0, base-4.3.1.0, 
base-4.3.0.0, base-4.2.0.2, base-4.2.0.1, base-4.2.0.0, base-4.1.0.0, 
base-4.0.0.0, base-3.0.3.2, base-3.0.3.1 (constraint from non-upgradeable 
package requires installed instance) 
Dependency tree exhaustively searched. 

Так clanki требует основания, чтобы быть старше 4,9 (стек говорит, что это более ясно, чем междусобойчик), и я тогда хотел бы понизить базу для 4.8.2.0. Когда я пробую ghc-pkg unregister base, это не позволяет мне. Не даже с --force:

$ ghc-pkg unregister base --force 
unregistering would break the following packages: xhtml-3000.2.1 Win32-2.3.1.1 transformers-0.5.2.0 time-1.6.0.1 template-haskell-2.11.0.0 process-1.4.2.0 pretty-1.1.3.3 hpc-0.6.0.3 hoopl-3.10.2.1 haskeline-0.7.2.3 ghci-8.0.1 ghc-boot-th-8.0.1 ghc-boot-8.0.1 ghc-8.0.1 filepath-1.4.1.0 directory-1.2.6.2 deepseq-1.4.2.0 containers-0.5.7.1 Cabal-1.24.0.0 bytestring-0.10.8.1 binary-0.8.3.0 array-0.5.1.1 (ignoring) 

Как я уже говорил, я попробовал также со стеком, но в конце концов он также сводится к неправильной версии базы. Как я могу понизить этот пакет?

ответ

5

Вы не можете. base закреплен на установке GHC; единственный способ получить другую версию - установить более старый компилятор, т. е. GHC-7.10. stack автоматически сделает это за вас, но я не был бы уверен, что это лучшее решение.

Скорее всего, пакет будет действительно работает с GHC-8.0; на самом деле ограничение base <= 4.9.0 указывает, что он должен. Это ограничение не имеет большого смысла, поскольку оно допускает только предварительный подрежим; вероятно, это должно быть base < 4.10.

Так что лучше всего загрузить источник из github, где base действительно не имеет верхней границы и установить его из локальной папки с помощью cabal install. Если это сработает, уведомите автора, чтобы он расслабился в Hackage.

Если он не скомпилирован в GHC-8.0, то лучше всего будет заставить его работать, отредактировав исходный код, а затем файл запроса на растяжение.

В качестве альтернативы, я бы прибегнул к стеку для установки пакета с более старым GHC. Для этого получите исходный код с ограничением base < 4.9 (вам необходимо вставить его в код github) и запустите stack setup, stack init и stack install.

+1

Как насчет отменяя ограничение с 'междусобойчик установить clanki --allow-новее base' –

+1

@JoachimBreitner: Я действительно не знал этого варианта, но это здорово! Почему бы вам не дать ему ответ? – leftaroundabout

+0

Да, GHC-7.10.3 работал. Благодаря! – garci560

7

В соответствии с ответом @ leftroundabout верхняя граница на base в этом пакете является фиктивной. В таком случае, или просто, если вы чувствуете себя смелым, вы можете поручить cabal игнорировать верхние границы зависимостей с соответствующей опцией:

cabal install clanki --allow-newer=base