Mit cabal mit mehrere GHC-Versionen
Habe ich beide ghc6 und ghc7 auf meinem desktop. Zur Installation neuer Pakete (für das spezifische ghc-version), benutze ich cabal
mit der Flagge --with-compiler=<ghc-dir>
angeben, für welches ghc ich will das Paket installiert.
Ich tun cabal update
vor der Installation eines neuen Pakets. Aber wie kann ich angeben, für welche ghc ich will das update? Ich meine, es gibt keine --with-compiler
fahne mit cabal install
. Ich würde denken, dass, nur wie benutze ich ghc-pkg7
für ghc7, es wäre cabal7
. Abgesehen von der cabal install
Befehl, von denen ich weiß, die ghc-version es ist die Anwendung, ich weiß nicht, welche ghc betroffen ist mit den anderen Kabalen Befehle.
Auch, wenn ich ghc-pkg check
ich finde die Probleme mit einigen Paketen und ich weiß nicht, wie zu beheben.
Ich würde wirklich gerne wissen - wenn jemand nicht haben - gute Praktiken bei der Verwendung mehrerer ghc-Versionen auf der gleichen Maschine. z.B. wie gehen Sie mit installation, updates, etc.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie erstellen Sie zwei Konfigurationsdateien, sagen
~/.cabal/config
und~/.cabal/config7
verwenden und die un(der)dokumentierte option--config-file
wählen Sie zwischen den beiden.config
- Datei nicht angeben, welche ghc zu benutzen.~/.cabal/config
gibt es eine auskommentierte optionwith-compiler
. Ich vermute, man sollte kommentieren Sie es.--config-file
ist eine option, wenn ich nicht finden konnten, mehr darüber. Ich erwarte nicht, dass man jede andere Antwort, vielleicht gibt es nicht. Ich sehe nicht den Punkt, warum die meisten Leute da draußen haben unterschiedliche Versionen 🙂 in meinem Fall, ich brauchte alte+neue ghc, um in der Lage sein, einige alte Pakete/Erweiterungen..Dachte ich
--with-ghc
ist die entsprechende option aus.Ich benutze mehrere
ghc
Versionen auf meinem Rechner. Sie haben alle unterschiedliche Namen wieghc-6.12.3
oderghc-7.4.1
. Sie sind in der Regel installiert mit diesen Namen und einen Standard-compiler gewählt wird durch erstellen von symbolischen links von, sagen wir,ghc
zughc-7.4.1
.Ich denke, Sie brauchen nicht verschiedene Kabalen Verzeichnisse für verschiedene
ghc
Versionen. Kabalen erzeugt eineghc-6.12.3
Unterverzeichnislib/yourpkg
fürGHC-6.12.3
- Dateien und so weiter.Auch
cabal update
keinen update-die Pakete installiert, nur holt die aktuellen Paketlisten aus Ihren Lieblings-Paket-Server. Diese sollte die gleiche sein für alle installierten Compiler.cabal update
hat keine--with-compiler
option, weil es völlig compiler-agnostisch-es sich nicht um GHC oder andere compiler überhaupt. Es ist einfach-downloads eine Liste der verfügbaren Pakete von Hackage, nichts mehr. Sie können erwarten, dass etwas ähnliches gilt auch für andere Befehle, die nicht lassen Sie Sie wählen Sie einen compiler (wie das dev-team war vorsichtig, um zu vermeiden, dass cabal GHC-spezifischen, geschweige denn auf einen bestimmten GHC-version, wo das Sinn macht).Diese Antwort dient zur Ergänzung der anderen Antworten
(die sind schon aufschlussreich).
Zuerst von allen, wissen
dass es deutliche Unterschiede
zwischen minor Versionen von GHC.
Zum Beispiel die änderung
von GHC 7.8 bis 7.10 GHC
(vgl. burning bridges Vorschlag).
So, es könnte besser sein
einen Namen für euer GHC-Binärdateien
auch minor-Versionsnummern, wie:
ghc7.8
undghc7.10
.Angenommen, Sie haben mehrere GHCs installiert mit den folgenden Namen:
Für GHC 7.8,
Sie können erstellen Sie eine Datei namens
~/.cabal-ghc-7.8/config
mit dem folgenden Inhalt
(zu den Standorten siehe oben):
Können Sie eine ausführbare Datei erstellen
möglicherweise genannt
cabal-ghc-7.8
in IhremPATH
(es verwendet das
--config-file
option beschrieben in n.m.'s Antwort):Nun, in Ihrem cabalized Quelle dir,
Sie können einfach ausführen
cabal-ghc-7.8 build
bauen Sie Ihre Quelldateien mit GHC 7.8.
(oder
cabal-ghc-7.8 test
oder irgendetwas anderes)Wiederholen Sie den Vorgang für alle GHCs, das Sie installiert haben.
Natürlich, Sie sollten nicht sich sorgen über die standard namens GHC.
Standardmäßig Kabalen suchen für ein GHC genannt
ghc
.Diese Antwort geht von einer UNIX/Linux-system (wie die Verwendung von
bash
), aber angepasst werden können, um andere Systeme mit kleinen änderungen.Nun (cabal version 1.24.0.0), kann man
Pakete zu installieren, die separat für verschiedene GHCs.
(Die meta-variable
path-to-ghc-executable-i
werden kann, wie/usr/bin/ghc-7.10.3
,/usr/local/bin/ghc-8.4.3
etc.)Woher wissen ich? Dieser Befehl kann über https://www.haskell.org/cabal/users-guide/installing-packages.html oder
cabal install --help
.Dem post-Zustand sieht wie folgt aus: ich installierte
QuickCheck
fürghc-8.0.1
undghc-6.12.1
, dann~/.cabal/lib
aussieht: