2015-07-30 12 views
5

Derzeit verwende ich GHC 7.10.1 auf meinem Ubuntu 14.04 System, gerade jetzt habe ich von der Mailingliste bemerkt, dass eine neue Version mit vielen Bugfixes veröffentlicht wurde. Also überlege ich, meinen GHC zu aktualisieren.Was muss ich tun, wenn ich eine neue Version von GHC installieren möchte?

Ich weiß, wie man GHC installiert, jedoch habe ich wenig Wissen darüber, wie man mit Paketen umgeht, die ich bereits durch cabal installiert habe. Es scheint, dass diese Pakete in ~/.cabal installiert wurden, zum Beispiel wurden Bibliotheken in ~/.cabal/lib/x86_64-linux-ghc-7.10.1 installiert und in ~/.ghc/x86_64-linux-7.10.1 registriert.

Der Pfadname (... x86_64-linux-7.10.1 ...) scheint darauf hinzuweisen, dass sie nur von GHC 7.10.1 verwendet werden könnten, also wenn ich eine neue Version GHC verwenden und die alte ghc 7.10.1 entfernen möchte von meinem System, sollte ich sie aufräumen und diese Pakete neu installieren?

zum Beispiel, sollte ich rm -rf ~/.cabal && rm -rf ~/.ghc und neu installieren sowohl Cabal und GHC? oder sollte ich diese Pakete einfach dort lassen? wenn ja, würden diese installierten Pakete vom neuen GHC wiederverwendet werden?

+0

Haben Sie GHC manuell installiert oder haben Sie [hvr's] (https://launchpad.net/~hvr/+archive/ubuntu/ghc) Pakete verwendet? Wie auch immer, da [7.10.2 viele Bugs beseitigt] (https://downloads.haskell.org/~ghc/7.10.2/docs/html/users_guide/release-7-10-2.html) und neue Bibliotheksversionen (binary und base) zur Verfügung stellt, ist es wahrscheinlich besser, '~/.cabal' und' ~/.ghc' zu entfernen. – Zeta

+0

@Zeta ich von Hand installiert ... – Alaya

Antwort

2

Ja, Sie müssen die Pakete neu installieren, wenn Sie den Compiler aktualisieren. Wenn Sie ~/.ghc löschen, werden die Pakete aus Sicht von GHC entfernt. Sie können auch ~/.cabal löschen und alles neu installieren, aber Binärdateien in ~/.cabal/bin (einschließlich cabal) werden in der Regel immer noch funktionieren, so oft ist es einfacher, diese zu behalten und etwas Zeit zu sparen (schauen Sie, was da ist). Es könnte Probleme mit einigen geben - ich denke, einige Binärdateien können den GHC-Pfad intern hart codiert haben, so dass es bricht, aber Sie können sie immer neu installieren.

~/.cabal/packages enthält zwischengespeicherte Downloads, also liegt es an Ihnen, ob Sie das löschen. Die Daten werden beim nächsten Run Cabal einfach wieder heruntergezogen. Im Zweifelsfall einfach löschen.

Sie sollten ~/.cabal/lib löschen, die die kompilierten Pakete enthält und nicht mit einem anderen GHC kompatibel sein wird. Ebenso für ~/.cabal/share.

Sofern Sie Ihre ~/.cabal/config Datei nicht manuell bearbeitet haben und die Änderungen beibehalten möchten, können Sie diese auch löschen und eine neue wird erstellt.

2

Sie nicht benötigen, um alles zu entfernen. Wenn Sie GHC 7.10.2 an der gleichen Stelle installieren, an der Sie GHC 7.10.1 installiert haben, werden alle symbolischen Verknüpfungen ghc, ghci, ghc-pkg usw. mit 7.10.2 überschrieben. Sie können jedoch weiterhin die versionierten Programme ghc-7.10.1 ausführen. ghci-7.10.1, ghc-pkg-7.10.1, etc., oder teilen Sie cabal mit, um mit einem spezifischen Compiler mit dem -w Flag zu erstellen. Alle Bibliotheken und Bibliotheksregistrierungsinformationen (ob sie mit GHC geliefert wurden, in der Benutzerpaketdatenbank installiert sind oder sich in einer Sandbox befinden) werden (standardmäßig) in GHC-versionsspezifischen Unterverzeichnissen gespeichert, sodass verschiedene Versionen von GHC diese nicht beeinträchtigen andere.

Wenn der Speicherplatz nicht knapp wird, würde ich vorschlagen, GHC 7.10.1 nicht zu entfernen. Nach allem wurde 7.10.2 erst gestern veröffentlicht, und wenn Sie ein seltsames Problem mit 7.10.2 entdecken, könnte es sich lohnen, zu überprüfen, ob 7.10.1 auch betroffen war.