2016-10-13 11 views
3

Ich versuche, ein Programm namens clanki auf Windows 10 zu installieren. In seiner Installation doc heißt es, "cabal install clanki" zu verwenden. Ich habe Kabale heruntergeladen, dann Ghc. Jetzt habe ich ein Versionsproblem für das Paket base.Wie man Basis mit Cabal downgradet?

$ 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. 

So erfordert clanki Basis älter zu sein als 4,9 (Stack sagt dies deutlicher als Kabale), und dann möchte ich Basis 4.8.2.0 herabzustufen. Wenn ich ghc-pkg unregister base versuche, erlaubt es mir nicht. Nicht einmal mit --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) 

Wie ich bereits erwähnt, habe ich versucht, auch mit Stack, aber am Ende kommt es auch bis in die falschen Version von Base. Wie kann ich dieses Paket herunterstufen?

Antwort

5

Sie können nicht. base ist an die GHC-Installation gebunden; Die einzige Möglichkeit, eine andere Version zu erhalten, besteht darin, einen älteren Compiler, d.h. GHC-7.10, zu installieren. stack würde das automatisch für Sie tun, aber ich wäre mir nicht sicher, ob das die beste Lösung ist.

Wahrscheinlich genug, das Paket wird tatsächlich mit GHC-8.0 arbeiten; in der Tat die Einschränkung base <= 4.9.0 zeigt an, dass es sollte. Diese Einschränkung ist nicht sehr sinnvoll, da sie nur die vorläufige Subrevision erlaubt. es sollte wahrscheinlich wirklich base < 4.10 sein.

Also das Beste wäre, die Quelle von Github herunterladen, wo base tatsächlich nicht die obere Grenze haben, und installieren Sie es aus dem lokalen Ordner mit cabal install. Wenn das funktioniert, benachrichtigen Sie den Autor, um die Grenze für Hackage zu lockern.

Wenn es in GHC-8.0 nicht kompiliert wird, wäre das beste Ding zu , es zu arbeiten durch Bearbeiten der Quelle und dann eine Pull-Anfrage Datei.

Alternativ würde ich dann auf Stack zurückgreifen, um das Paket mit einem älteren GHC zu installieren. Um dies zu tun, erhalten Sie den Quellcode mit der base < 4.9 Einschränkung (Sie müssen das im Github-Code einfügen), und führen Sie stack setup, stack init und stack install.

+1

Wie wäre das Überschreiben der Einschränkung mit 'Kabale installieren clanki --allow-neuere base' –

+1

@JoachimBreitner: Ich wusste diese Option eigentlich nicht, aber das ist großartig! Warum machst du es nicht zur Antwort? – leftaroundabout

+0

Ja, GHC-7.10.3 hat funktioniert. Vielen Dank! – garci560

7

Entsprechend der Antwort von @ leftroundabout ist die obere Grenze auf base in diesem Paket falsch. In einem solchen Fall, oder einfach, wenn Sie fett fühlen, können Sie cabal anweisen, obere Schranken für Abhängigkeiten mit der entsprechenden Option zu ignorieren:

cabal install clanki --allow-newer=base