2013-01-05 12 views
9

Die Arbeit mit Cabal ist so anstrengend, ich halte eine Kopie meiner neuesten funktionierenden .cabal-Datei, so dass wenn einige andere Pakete (besonders ausführbare Dateien wie hakyll, die für immer neu zu installieren) kaputt sind, ich vom letzten Speicherpunkt neu laden kann .gibt es einen Workaround für Cabal gebrochene Neuinstallationen?

Aber es immer noch nicht ein paar Sachen einfacher machen, weil ich nicht ein paar Pakete meine Pakete in unterschiedlicher Reihenfolge installieren können, ohne vollständig zu installieren (dh. Das Paket, das andere bricht sollten vor anderen installiert werden usw.)

zum Beispiel, hier ist was passiert, wenn ich versuche, cabal-dev zu installieren (was für mich ein sehr wichtiges Paket ist):

➜ ~ cabal install cabal-dev 
Resolving dependencies... 
In order, the following would be installed: 
bytestring-0.9.2.1 (new version) 
containers-0.4.2.1 (new version) 
template-haskell-2.8.0.0 (reinstall) changes: containers-0.5.0.0 -> 0.4.2.1 
text-0.11.2.3 (reinstall) changes: bytestring-0.10.0.0 -> 0.9.2.1 
transformers-0.2.2.0 (new version) 
mtl-2.0.1.0 (new version) 
parsec-3.1.3 (reinstall) changes: bytestring-0.10.0.0 -> 0.9.2.1, mtl-2.1.2 -> 
2.0.1.0 
unix-2.3.2.0 (new version) 
directory-1.0.0.3 (new version) 
network-2.3.2.0 (new version) 
HTTP-4000.2.6 (reinstall) changes: bytestring-0.10.0.0 -> 0.9.2.1, mtl-2.1.2 
-> 2.0.1.0, network-2.4.0.1 -> 2.3.2.0 
process-1.1.0.2 (reinstall) changes: directory-1.2.0.0 -> 1.0.0.3, 
unix-2.6.0.0 -> 2.3.2.0 
Cabal-1.14.0 (new version) 
tar-0.3.2.0 (new package) 
zlib-0.5.4.0 (reinstall) changes: bytestring-0.10.0.0 -> 0.9.2.1 
cabal-dev-0.9.1 (new package) 
cabal: The following packages are likely to be broken by the reinstalls: 
shakespeare-1.0.2 
hamlet-1.1.2 
hakyll-3.5.2.0 
lens-3.7.1.2 
ghc-7.6.1 
haddock-2.13.1 
data-lens-template-2.1.7 
cmdargs-0.10.1 
hoogle-4.2.14 
QuickCheck-2.5.1.1 
Extra-1.46 
ipprint-0.4.2 
xml-1.3.12 
texmath-0.6.1.1 
pandoc-1.9.4.5 
wai-1.3.0.1 
warp-1.3.6 
tagsoup-0.12.8 
snap-server-0.9.2.4 
snap-core-0.9.2.2 
regex-tdfa-1.1.8 
Unixutils-1.52 
network-2.4.0.1 
simple-sendfile-0.2.10 
network-conduit-0.6.2.1 
citeproc-hs-0.3.6 
language-lua-0.1.4 
json-0.7 
highlighting-kate-0.5.3.3 
ddc-base-0.3.1.1 
ddc-driver-0.3.1.3 
ddc-core-simpl-0.3.1.1 
ddc-core-llvm-0.3.1.1 
ddc-build-0.3.1.3 
ddc-core-salt-0.3.1.1 
ddc-core-eval-0.3.1.1 
ddc-core-0.3.1.1 
http-types-0.7.3.0.1 
hexpat-0.20.3 
hashable-1.2.0.2 
vault-0.2.0.3 
unordered-containers-0.2.3.0 
uniplate-1.6.10 
case-insensitive-0.4.0.4 
enumerator-0.4.19 
zlib-enum-0.2.3 
blaze-builder-enumerator-0.2.0.5 
attoparsec-enumerator-0.3.1 
conduit-0.5.5 
blaze-builder-conduit-0.5.0.3 
blaze-markup-0.5.1.4 
blaze-html-0.5.1.3 
blaze-builder-0.3.1.0 
attoparsec-0.10.3.0 
haskell98-2.0.0.2 
Cabal-1.16.0 
bin-package-db-0.0.0.0 
zlib-bindings-0.1.1.2 
zip-archive-0.1.2.1 
Use --force-reinstalls if you want to install anyway. 

Und nur Abhilfe für dies ist Kabalen-dev vor einigen anderen Paketen in dieser Liste zu installieren. Aber ich denke, selbst wenn ich das tue, ist es nicht garantiert, dass ein anderes Paket nicht in Konflikt steht.

Jetzt frage ich mich, wie behandeln Sie Konflikte in Ihrer Kabalen-Installation, und wenn es eine Lösung dafür gibt. Ich kann einfach nicht alle Bibliotheken installieren, die ich mit Cabal brauche. Irgendwelche Hilfen werden geschätzt.

+0

Die Ironie ist, dass dies die Art von Problem ist, die cabal-dev entwickelt wurde, um zu funktionieren. Um cabal-dev zu installieren, müssen Sie zuerst cabal dev installieren. Hat jemand ein träge ausgewertetes OS herumliegen? – AndrewC

Antwort

7

Das Problem in diesem Fall ist nicht Cabal oder Kabale installieren (1), it's cabal-dev:

if impl(ghc >= 6.12) 
    Build-depends: 
    containers >= 0.3 && < 0.5 

So mit ghc-7.6.1, das containers Paket verwenden weigert, die mit ihm : sehr schlecht.

-- Require this specific version that came with GHC 6.10 because 
-- of packaging problems with containers-0.2 
if impl(ghc == 6.10) 
    Build-depends: 
    containers == 0.2.0.1 

if impl(ghc == 6.8) 
    Build-depends: 
    containers == 0.1.0.2 

Build-depends: 
    bytestring >= 0.9 && < 0.10, 

Es akzeptiert nicht die bytestring Version entweder

directory >= 1.0 && < 1.3, 
    filepath >= 1.1 && < 1.4, 
    Cabal >= 1.10.0.0 && < 1.15, 

noch die Cabal Version

HTTP >= 4000.0.9 && < 4000.3, 
    mtl >= 1.1 && < 2.1, 

wird es wahrscheinlich nicht mit der mtl Version gerne haben Sie

network >= 2.2 && < 2.4, 

oder network

pretty >= 1.0 && < 1.2, 
    process >= 1.0 && < 1.2, 
    tar >= 0.3 && < 0.4, 
    zlib >= 0.5 && < 0.6, 
    transformers >= 0.2 && < 0.3, 

oder transformers

-- Template haskell is special: the compiler will die if a 
    -- version other than the one that is shipped with the compiler 
    -- is used. Here, we don't constrain the version and hope that 
    -- there will be only one. 
    template-haskell 

Nach this sollte ghc-7.6.1 mit der Github Version glücklich sein, so Klon und darauf aufbauen.

(1) Nun, das ist Teil des Chaos, weil die hackage page nicht alle Abhängigkeiten für cabal-dev zeigt nicht, nur diejenigen für ghc-pkg-6_8-compat, nämlich base und cabal, so ist es nicht offensichtlich, dass cabal-dev-0.9.1 nicht funktioniert mit ghc-7.6.

+0

War das nicht alles in der Hauptversion behoben? –

+0

Ich habe keine Ahnung, was ist die Hauptversion, das Repo? Wenn es behoben ist, warum haben sie noch keine fixe Version zum hacken hochgeladen? –

+0

Der auf GitHub. Zum Beispiel, die Container-Abhängigkeit [ist in der Mainline gelockert] (https://github.com/creswick/cabal-dev/blob/master/cabal-dev.cabal): 'contains> = 0.3 && <0.6'. –

Verwandte Themen