mysteriösen Kabale zu installierende Probleme
-
30-09-2019 - |
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.
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ürghc
,ghci
,ghc-pkg
undrunhaskell
) zu meinem vorherigen GHC, die die eine von der Haskell Platform 2010.1.0.1 Installateur war. - Ich installierte
cabal-install
es istbootstrap.sh
Skript. - Ich installierte gepatchte Versionen der
random
undhaskell98
Pakete. Die Unterschiede sind nur in ihren.cabal
Dateien- stieß
random
Version zu1.0.0.2.1
und verändert es auftime
Abhängigkeitstime == 1.1.*
sein
- stieß
haskell98
die Versionen1.0.1.1.1
und das ist es
- stieß
- lief ich
cabal update
undcabal upgrade
zu sehen von Datum, welche Pakete sind out. Ich habecabal install
diejenigen. Ich glaube, dass dies hilft, einen stabilen Zustand schneller zu erreichen. (Beachten Sie, dasssyb
die Installation fehlgeschlagen ist und dasscabal install parsec
sagte, es gibt nichts zu tun, wenncabal 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 install
edhlint
,yesod
,haddock
,HDBC-mysql
,hakyll
und andere Pakete und danncabal install
ed ich die vorherige Liste wieder und wieder, bis mein Setup einen „stabilen Zustand“ erreicht, in demcabal 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 Zykluscabal install
ing 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