Frage

Das ist also ein bisschen persönlich, aber vielleicht haben die Leute gute Ratschläge oder Problemumgehungen.

Das Problem ist die Installation der Kabaleninstallation und Haskell-Plattform unter Debian.

Wenn du apt-get install haskell-platform, es versendet mit cabal-install, und sein Befehl cabal ist verfügbar.

Jetzt das cabal-install ist nicht auf dem neuesten Stand:

> which cabal
/usr/bin/cabal
> /usr/bin/cabal --version
cabal-install version 0.8.0
using version 1.8.0.2 of the Cabal library

Aber mein Verständnis des Laufens cabal update ist, dass es Cabal aktualisiert, aber da es kein "Debian -Ding" ist, bringt es es hinein ~/.cabal/bin/.

> ~/.cabal/bin/cabal --version
cabal-install version 0.8.2
using version 1.8.0.2 of the Cabal library

Jetzt hat mein System 2 Kabals und die, die ich durch Tippen bekomme cabal ist nicht die eine, die ich verwenden möchte ... weil es den anderen statt sich selbst aktualisiert und daher unwirksam ist.

Also, was ich tat, war ich in meinem alias ~/.bashrc:

alias cabal='~/.cabal/bin/cabal'

Jetzt:

> cabal --version
cabal-install version 0.8.2
using version 1.8.0.2 of the Cabal library

Also meine letzten Fragen:

  • Gibt es ein Debal -Repository mit Cabal 0,8.2?
  • Könnte meine aktuelle Lösung zu Problemen führen? (Zum Beispiel, which cabal zeigt immer noch auf meine nutzlose /usr/bin/cabal, Wenn Skripte diesen Befehl verwenden, werden sie sich täuschen ...)
  • Hat sich jemand eine bessere Lösung ausgedacht? (Meins ist ein bisschen ad-hoc, aber das ist alles, was ich mit meinem schlechten Wissen über das, was hinter den Kulissen geschieht ...
  • Bitte korrigieren Sie mich, wenn etwas, was ich oben sage, falsch oder ungenau ist.
War es hilfreich?

Lösung

Was ich tue, ist, Cabal mit dem zu installieren --global Flagge. Dadurch wird Cabal in die Installation /usr/local/bin/cabal, So wird es immer die Debian -Pakete Cabal übertreffen.

Eine andere Möglichkeit besteht darin, die Debian -Pakete im Allgemeinen zu vermeiden und die Haskell -Plattform direkt aus ihrer Quelle zu installieren. Dieser Ansatz ist auch besser, wenn Sie immer die neuesten Veröffentlichungen der Haskell -Libs haben möchten.

Andere Tipps

Ich halte meinen Benutzer-lokal $HOME/.cabal/bin vorne PATH. Ich installiere nur ghc6, ghc6-prof, ghc6-doc und cabal-install Aus den Verteilungspaketen. Ich verwende keine Verteilung cabal-install für alles mehr als das neue zu starten ~/.cabal. Der Rest, mit dem ich installiere cabal install, einschließlich der neueren cabal selbst.

Wenn ich neuere GHC verwenden möchte, stelle ich es ein /usr/local/stow/ghcVERSION, und aktivieren Sie es mit GNU stow (Es fügt Symlinks in /usr/local was wiederum Vorrang in meinem hat PATH). Wenn ich wieder zum Distribution GHC wechseln möchte, renne ich einfach stow -D um alle symbolischen Links dazu zu entfernen.

Ich denke, ich benutze cabal-dev projektspezifische Kabaleninstallationen zu haben und zerbrochene Abhängigkeiten zu vermeiden, die miteinander passieren cabal von Zeit zu Zeit.

Tatsächlich verwende ich überhaupt keine Haskell -Plattform, weil ich nicht alles brauche und es einfacher finde, einzelne Bibliotheken installieren zu können. Ich installiere keine Vertriebsbibliotheken, da nicht alle verfügbar sind oder genau die Versionen, die ich brauche. und es ist viel einfacher, Konflikte zu kontrollieren, wenn alle an derselben Stelle installiert sind (~/.cabal in meinem Fall). Ich installiere nichts mit --global, weil ich denke, es ist falsch und schwer zu rollen.

Natürlich sind diese Informationen nicht mehr, aber ja, Debian instabil und Tests haben zum Zeitpunkt des Schreibens Kabaleninstall 0.10.2.

Im Allgemeinen richtet sich die Debian -Verpackung von Haskell -Sachen an Benutzer, die eine Reihe von Paketen wünschen, von denen bekannt ist, dass sie zusammenarbeiten, dh keine Abhängigkeitshölle, auf Kosten, nicht immer die neuesten und größten zu haben. Dies beinhaltet Kabaleninstall. Ich benutze Cabal-Installation aus den Repositories und nur um die Bibliotheken zu installieren, die noch nicht für Debian verpackt wurden.

Haftungsausschluss: Ich bin einer der Jungs, die diese Pakete für Debian erstellen.

Auf Ubuntu neige ich auch dazu, GHC über Stow zu installieren und die Systempakete insgesamt zu ignorieren.

Eine leichte Wendung aus dem Ansatz von Jetxee besteht darin, dass ich die Haskell -Plattform (aus Quelle) installiere und sie in das GHC -Stow -Verzeichnis einbinden. Ich nehme an, ich sollte die Pfade nennen /usr/local/stow/haskell-platform-VERSION, aber ich neige dazu zu verwenden /usr/local/stow/ghc-VERSION stattdessen.

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