Frage

Mit einer Neuinstallation von dem „Haskell Platform“. (OS X Snow-Leopard-Plattform 2010.1.0.1), tut dies bewirkt, dass einfache Folge verursacht sehr seltsam cabal install Verhalten:

$ cabal install time

$ cabal install random

$ ghc-pkg list random
/Library/Frameworks/GHC.framework/Versions/612/usr/lib/ghc-6.12.1/package.conf.d
   random-1.0.0.2
/Users/yairc/.ghc/i386-darwin-6.12.1/package.conf.d
   random-1.0.0.2

random-1.0.0.2 wird zweimal in meinem System installiert. und jetzt gerade cabal install random Neuinstallationen jedes Mal random-1.0.0.2.

Sieht aus wie random hängt von time und Kabalen will es neu installieren, nachdem es gibt eine neue Version von time zur Verfügung? Und wegen zwei random-1.0.0.2 Kabale verwechselt wird und immer denkt, dass es nicht aktuell ist, weil es bei der ersten Suche?

ghc-pkg check findet keine Fehler.

War es hilfreich?

Lösung 3

Ich werde das Work-around beschreiben, die für mich bisher gearbeitet. Ich habe viele verschiedene Dinge ausprobiert, aber ich werde nur hier den Versuch beschrieben, dass gearbeitet.

(btw: Ich verwende Mac OS X 10.6.4 und Ihre Ergebnisse könnten auf verschiedenen Systemen unterschiedlich sein)

  • Ich installierte 6.12.3 GHC von der Quelle. Entfernen Sie nicht Ihre vorherige GHC als Gebäude GHC erfordert es.
  • Ich entfernte die Symlinks bei /usr/bin (für ghc, ghci, ghc-pkg und runhaskell) zu meinem vorherigen GHC, die die eine von der Haskell Platform 2010.1.0.1 Installateur war.
  • Ich installierte cabal-install es ist bootstrap.sh Skript.
  • Ich installierte gepatchte Versionen der random und haskell98 Pakete. Die Unterschiede sind nur in ihren .cabal Dateien
    • stieß random Version zu 1.0.0.2.1 und verändert es auf time Abhängigkeits time == 1.1.*
    • sein
    • stieß haskell98 die Versionen 1.0.1.1.1 und das ist es
  • lief ich cabal update und cabal upgrade zu sehen von Datum, welche Pakete sind out. Ich habe cabal install diejenigen. Ich glaube, dass dies hilft, einen stabilen Zustand schneller zu erreichen. (Beachten Sie, dass syb die Installation fehlgeschlagen ist und dass cabal install parsec sagte, es gibt nichts zu tun, wenn cabal upgrade anders gesagt. Also ich allein diese beiden Pakete links)

ich bestätigte, dass mein Setup, indem Sie ghc-pkg check zwischen den Stufen in Ordnung ist. Manchmal bricht es, da ein Paket über eine frühere Version mit der gleichen Versionsnummer und Pakete neu installiert wird, die davon abhing neu installiert werden müssen. Wenn das passiert ich die kaputten Pakete cabal install wieder.

ich auch das folgende Programm verwendet, um sicherzustellen, dass mein Setup nicht zwei Pakete enthält, mit der gleichen Version:

import Data.List (sort)
import Data.Maybe (fromJust)
import System.IO (hGetContents)
import System.Process (CreateProcess (std_out), StdStream (CreatePipe), createProcess, shell)

main :: IO ()
main = do
    pkgListRaw <-
        createProcess (shell "ghc-pkg list") { std_out = CreatePipe }
        >>= hGetContents . fromJust . sndOfFourTup
    let pkgListSorted = sort . filter (not . null) $ lines pkgListRaw
    putStrLn .
        unlines . map (dropWhile (== ' ') . fst) .
        filter (uncurry (==)) . zip pkgListSorted $ tail pkgListSorted
    where
        sndOfFourTup (_, x, _, _) = x
  • I cabal installed hlint, yesod, haddock, HDBC-mysql, hakyll und andere Pakete und dann cabal installed ich die vorherige Liste wieder und wieder, bis mein Setup einen „stabilen Zustand“ erreicht, in dem cabal install nicht von denen nicht neu installiert werden.

  • ich festgestellt, dass meine eigenen Programme ich arbeite jetzt kompilieren und zu arbeiten. Alles scheint in Ordnung zu sein jetzt

Weitere Informationen:

  • Ich konnte nicht Haskell Platform 2010.1.0.1 an die Arbeit. Dinge nur für mich gearbeitet, nachdem ich zu GHC 6.12.3 aktualisiert. (?) Ironischerweise geht gegen die Empfehlung auf GHC Download-Seite:
  

Stop!

     

Für die meisten Benutzer empfehlen wir statt GHC die Haskell-Plattform zu installieren. Der aktuelle Haskell Platform Release enthält einen aktuellen GHC Release sowie einige anderen Werkzeuge (wie Kabale), und eine größere Menge von Bibliotheken, die zusammen an der Arbeit bekannt sind.

  • Diese Behelfslösung wird wahrscheinlich auch in der Zukunft brechen. Ich denke, dass dies wahrscheinlich in ein paar Monaten passieren wird. Eine Kern-Bibliothek wie random erhält aktualisiert und dann Abhängigkeitsprobleme wieder zu entwirren beginnen. Dann werde ich / Sie Zeit zu verbringen, haben auf unsere Setups festgelegt bekommen. Vielleicht dann wäre es ein Upgrade auf eine neuere GHC erfordern. Aber wer weiß, vielleicht dann wird es eine ältere Version sein, die stabil sein wird als Hackage Pakete aktualisiert werden Abhängigkeit verbundenen Probleme zu lösen. Als Service für Sie, werde ich diese Frage aktualisieren und beantworten, wenn die Zeit kommt. (Unter der Annahme, dass andere dieses Problem zu haben. Bisher habe ich bestätigt, dass Simon Marlow und Peaker Gesicht dieses Problem auch)

  • Wege zu wissen, dass Ihre Haskell Setup unterbrochen wird (wenn eine dieser Bedingungen wahr ist, dann das Setup ist gebrochen):

    • Nichts funktioniert
    • ghc-pkg check sagt, dass es gebrochen ist
    • Die kurze Programm, dessen Quelle ich über Funde in dieser Antwort gesetzt, dass you haben ein Paket installiert zweimal mit exakt den gleichen
    • cabal update und dann Zyklus cabal installing die Liste der Pakete ich oben geschrieben habe, oder eine andere Liste (vorzugsweise ein großes mit vielen Abhängigkeiten). Wenn Sie noch nie einen stabilen Zustand (eine Iteration des Zyklus immer neu installiert etwas), dann Ihr Setup gebrochen erreichen. ACHTUNG: : Dieser Schritt kann Sie zur Zeit funktionierenden Haskell Setup zerstören. Tun Sie dies, wenn Sie maso-neugierig oder bereit sind, Ihr Setup zu beheben, nachdem es bricht (ein Vorgang, der zeitaufwendig sein könnte)
  • Ich möchte wissen, ob Ihre Setups defekt sind oder arbeiten. Dies könnte mir helfen. wenn wir zum Beispiel feststellen, dass GHC 6.10 Setups fein arbeiten, I / U könnte diese Setups Menschen anlässlich der Empfehlung zu jemandem empfehlen auszuprobieren Haskell etc.

Ich hoffe, dass dies hilft anderen die gleichen oder ähnliche Probleme. Vielen Dank an Simon Marlow und John!

Andere Tipps

Bitte

ghc-pkg check

Und wenn das zeigt keine Fehler, lassen Sie uns sehen die Ausgabe von

ghc-pkg list -v

und

cabal install random -v

Bearbeiten : Ich habe Ihr Problem mit GHC 6.12.1 wiedergeben kann, aber nicht mit 6.12.2, mit genau die gleichen Version von Kabalen-install (0.8.0). Ich werde das prüfen.

Edit 2 : als Fehler gemeldet in Kabale installieren.

Ich habe zwei mögliche Lösungen, von denen beide etwas gefährlich sind, aber sollten Sie eine Arbeits Installation. Ich bin froh, Simons den folgenden, weil es wie eine Art von Fehler klingt für mich. Um eine funktionierende Installation zu bekommen, würde ich versuchen, die folgenden ersten:

ghc-pkg unregister random

Sie dann ghc-pkg Liste zufällig zu sehen, was installiert ist. Ich würde vermuten, (aber ich bin mir nicht sicher), dass Sie immer noch die / Library / Frameworks Version (von der Plattform) haben, würden aber die neu installierte Version verschwunden sein. Wenn dies der Fall ist, gehen Sie zum nächsten Schritt. Wenn dies nicht der Fall werden Sie wahrscheinlich eine saubere Neuinstallation der Plattform müssen tun.

Unter der Annahme, die Plattform zufällig noch vorhanden ist, dies zu tun:

cabal unpack random

cd in das Verzeichnis entpackt es in und bearbeiten die .cabal Datei durch die Version 1.0.0.2.1 Stoßen (ein weiteres Feld hinzu und erhöhen sie durch eins). Dann Cabal aus diesem Verzeichnis installieren und es sollte den neuen Zufall installieren. Da dies hat eine andere Version als die Plattform zufällig, können die beiden sicher koexistieren.

Anstatt das GHC-pkg austragen zu tun, können Sie direkt die Registrierungsdatei aus

löschen
  

/Users/yairc/.ghc/i386-darwin-6.12.1/package.conf.d

Der Dateiname wird ein Hash angehängt, so dass man sich den Verzeichnisinhalt zu suchen braucht, um tatsächlich den Wert zu erhalten. Löschen Sie einfach die Datei und ghc-pkg und Cabal sollte es nicht von da an sehen. Dadurch wird die Plattform-Installation nicht berühren (so ist es in diesem Sinne sicherer ist), aber das Potenzial ist da noch andere installierte Pakete zum Schlauch. Danach können Sie den Zufall Paket durch Auspacken und Erhöhen Sie die Version wie oben.

erneut installieren
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top