Ich habe Probleme zu verstehen, wie Pakete in einer Cabal-Sandbox aktualisiert werden. Ich möchte esqueleto-1.3.4.5
zu esqueleto-1.3.5
aktualisieren und änderte meine myapp.cabal
, um auf esqueleto >= 1.3.5 && < 1.4
zu hängen.Aktualisieren von Paketen, die in einer Cabal-Sandbox installiert sind
$ cabal --version cabal-install version 1.18.0.2 using version 1.18.1.2 of the Cabal library
$ cabal install --upgrade-dependencies Resolving dependencies... cabal: Could not resolve dependencies: trying: esqueleto-1.3.4.5/installed-ac7... (user goal) next goal: myapp (user goal) rejecting: myapp-0.0.0 (conflict: esqueleto==1.3.4.5/installed-ac7..., myapp => esqueleto>=1.3.5 && <1.4)
Der Fehler mir sieht aus, als ob Clique versucht, die installierte Version von esqueleto zu lösen Abhängigkeiten verwenden, esqueleto-1.3.4.5/installed-ac7...
Könnte jemand erklären, wie das funktioniert?
Meine Intuition war, dass ich --upgrade-dependencies
verwenden sollte, um dies zu tun, aber ich versuchte auch --only-dependencies
und --reinstall
.
'cabal sandbox delete',' cabal sandbox init', 'cabal install --only-dependencies' ist, wie ich normalerweise so etwas mache. Mit einer relativ kleinen Anzahl von Abhängigkeiten dauert es nicht lange, das Ganze erneut auszuführen. Alternativ könntest du einfach den alten 'equeleto'-Ordner aus deinem' .cabal-sandbox/ -package-db/'-Ordner löschen (ich bin vielleicht unpräzise in diesem Ordnerpfad, kann mich nicht an meinen Kopf erinnern) –
bheklilr
Danke bhecklilr - scheint für mich in Ordnung zu sein, obwohl die yesod-Plattform viel Zeit zum kompilieren braucht, könnte das Löschen des Paketordners eine bessere Idee sein. Bitte posten Sie Ihren Kommentar als Antwort, ich werde ihn aufwerten. –