Ich habe gerade ein Kabale Update und versuchte, 'Objektiv' aus dem hackage zu installieren. Das gab mir den folgenden Fehler -Kabale Abhängigkeit Auflösung fail für 'Objektiv'
$ cabal install -j lens
Resolving dependencies...
Configuring dlist-0.7.0.1...
... <snip>
Configuring mtl-2.0.1.0...
Building mtl-2.0.1.0...
Failed to install mtl-2.0.1.0
Last 10 lines of the build log (/home/aj/.cabal/logs/mtl-2.0.1.0.log):
Building mtl-2.0.1.0...
Preprocessing library mtl-2.0.1.0...
[ 1 of 21] Compiling Control.Monad.Writer.Class (
Control/Monad/Writer/Class.hs, dist/build/Control/Monad/Writer/Class.o)
[ 2 of 21] Compiling Control.Monad.State.Class (Control/Monad/State/Class.hs,
dist/build/Control/Monad/State/Class.o)
[ 3 of 21] Compiling Control.Monad.Reader.Class (
Control/Monad/Reader/Class.hs, dist/build/Control/Monad/Reader/Class.o)
[ 4 of 21] Compiling Control.Monad.RWS.Class (Control/Monad/RWS/Class.hs,
dist/build/Control/Monad/RWS/Class.o)
[ 5 of 21] Compiling Control.Monad.Identity (Control/Monad/Identity.hs,
dist/build/Control/Monad/Identity.o)
[ 6 of 21] Compiling Control.Monad.Error.Class (Control/Monad/Error/Class.hs,
dist/build/Control/Monad/Error/Class.o)
Control/Monad/Error/Class.hs:93:18: Not in scope: `catch'
... <snip>
cabal: Error: some packages failed to install:
aeson-0.7.0.3 depends on mtl-2.0.1.0 which failed to install.
exceptions-0.6 depends on mtl-2.0.1.0 which failed to install.
free-4.7.1 depends on mtl-2.0.1.0 which failed to install.
lens-4.1.2 depends on mtl-2.0.1.0 which failed to install.
mtl-2.0.1.0 failed during the building phase. The exception was:
ExitFailure 1
So sieht aus wie Mtl-2.0.1.0 ist gebrochen. Allerdings zeigt eine weitere Abhängigkeitsverfolgung, dass nichts in der Objektivpaketdefinition tatsächlich von dieser Version von mtl abhängt. Infact, das nächste, was ich versuchte, war -
$ cabal install -j aeson
$ cabal install -j free
$ cabal install -j lens
Und das gelingt ohne Probleme.
Warum sollte Cabal versuchen, mtl-2.0.1.0
bei der Installation lens
direkt installieren? Ich habe versucht, meine .ghc und .cabal Verzeichnisse zu entfernen und die Schritte mit den gleichen Ergebnissen zu wiederholen. Die Kabale Version, die ich benutze, ist 1.16 -
$ cabal -V
cabal-install version 1.16.0.2
using version 1.16.0 of the Cabal library
Dies wird im Zusammenhang mit das letzte Update von 'Transformatoren'. Wenn Sie ein paar Tage warten können, bis die Pakete, die von 'transformers 'abhängig sind, aktualisiert werden, sollten Sie keine Probleme beim Installieren von' lens' bekommen. –
@DannyNavarro Nun, ich habe geschafft, Linse mit der oben genannten Methode installiert zu bekommen. Die Frage ist mehr von einem - warum, wenn 'cabal install lens' versagt, würde' cabal Installation von aeson && cabal install free && cabal install lens' arbeiten? –
Ich denke, es funktioniert, weil Sie durch die Installation von 'free 'und' aeson '' cabal' zwingen, die installierten Versionen zu verwenden, anstatt sie selbst auszuwählen. Es scheint eine Paketversion auszuwählen, die 'mtl-2.0.1.0' verwendet. Vielleicht ist es eine obere Grenze in 'Aeson' oder' freien' Abhängigkeiten, aber höchstwahrscheinlich wird es ein anderes Paket tiefer im Abhängigkeitsgraphen sein. –