2013-01-05 24 views
9

Cabal ile çalışmak çok yorucu, en son çalışan .cabal dosyasının bir kopyasını saklıyorum, böylece diğer paketler (özellikle yeniden yüklemek için gereken hakyll gibi çalıştırılabilir) bozulduğunda, en son kaydetme noktasından yeniden yükleyebilirim .Cabal kırık yeniden yüklemeleri için bir geçici çözüm var mı?

Ama ben tamamen

(yani. Başkalarını kırar paket diğerlerinden vb önce yüklü olmalıdır) farklı sırayla benim paketi kurmadan bazı paketler yükleyemediğimden hala bazı şeyler daha kolay yapmazlar Örneğin burada ben (benim için çok önemli bir paket olan) cabal-dev yüklemeye çalıştığınızda gerçekleşir: Bunun

➜ ~ 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. 

Ve tek geçici çözüm bu listede diğer bazı paketler önce cabal-dev yüklemektir. Ama sanırım bunu yapsam bile, başka bir paketin çatışmayacağı garanti edilmez.

Şimdi, cabal kurulumunuzdaki çakışmaları nasıl ele aldığınızı ve bunun için bir düzeltme olup olmadığını merak ediyorum. Cabal ile ihtiyacım olan tüm kütüphaneleri kuramıyorum. Herhangi bir yardım takdir edilecektir.

+0

ironi, bu tür bir sorun cabal-dev'in etrafta çalışmak üzere tasarlanmış olması. Cabal-dev'i kurmak için önce cabal dev. Etrafında tembel olarak değerlendirilmiş bir işletim sistemi var mı? – AndrewC

cevap

7

bu durumda sorun Cabal değilse veya cabal yüklemek (1), it's cabal-dev: ghc-7.6.1 Yani

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

, kendisiyle birlikte gelen containers paketi kullanmak reddediyor

: çok kötü.

-- 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, 

O bytestring versiyonunu kabul etmiyor ya

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

ne de muhtemelen mtl sürümü ile mutlu olmayacaktır

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

Cabal sürümü

network >= 2.2 && < 2.4, 
var

veya

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, 

network veya

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

this göre, ghc-7.6.1 github sürümü ile mutlu olmalı transformers, klon böylece o kurmak.

(1) Eh, hackage page, sadece bu ghc-pkg-6_8-compat için, cabal-dev için yani base ve cabal tüm bağımlılıkları göstermez çünkü karışıklık parçasıdır, yüzden cabal-dev-0.9.1 çalışmadığını açık değildir ghc-7.6 ile.

+0

Tüm bunlar ana hat sürümünde sabitlenmedi mi? –

+0

Hiçbir fikrim yok, ana hat versiyonu nedir, repo nedir? Eğer düzeltildiyse, neden hala hackage için sabit bir sürüm yüklemediler? –

+0

GitHub'daki. Örneğin konteyner bağımlılığı [ana hatlarda rahatlatılır] (https://github.com/creswick/cabal-dev/blob/master/cabal-dev.cabal): 'konteynerler = = 0.3 && <0.6'. –