Haskell installieren

Ich wollte ein paar Worte darüber verlieren, wie ihr am einfachsten Haskell auf euer System bekommt.

Bevor ich anfange:

  • für meinen Workshop auf dem Developer Open Space ist es ziemlich egal: wenn ihr GHCi zum laufen bekommt (extrem einfach) reicht das!
  • vieles klingt komplizierter als es wirklich ist
  • in die Fettnäpfchen (Cabal Hell) tritt man in der Regel erst wenn es in die real World geht

Haskell selbst ist im Prinzip zwar ein so eine Art Standard (aktuell Haskell 2010) und es gibt mehr als eine Implementation, trotzdem ist der Glorious/Glasgow Haskell Compiler der defacto-Standard und
es macht IMO kaum Sinn irgendwas anderes zu installieren.

die Möglichkeiten

  • sogenannte minimal Installers (bzw. nur GHC/Cabal): das würde ich empfehlen (siehe unten)
  • Stack – wird wohl zukünftig der Standard werden und die Platform ablösen
  • Haskell Platform: einfach aber aus meiner Sicht nicht mehr empfehlenswert

Cabal Hell … WAT?

Der Compiler selbst ist auch nicht das, was ab und an Probleme macht – es ist der Paket-Manager (wir .NET Leute kennen das ja ..) – das System selber heißt Cabal und ist genauso gut oder schlecht wie jedes andere Paket-System da draußen (jedenfalls meiner Meinung nach) – im Gegenteil, da sitzen eine Menge richtig kluger Köpfe dahinter. Die Probleme fangen da an, wo man cabal-install benutzt um Pakete global zu installieren – das geht mit cabal-install nämlich nur (momentan) in einer Version …

Es beginnt dann häufig mit der Haskell Platform die eben einige Standard-Pakete global installiert – die Idee war ein Batteries included System abzuliefern und unter Windows war das lange die einzige Möglichkeit, weil einige Pakete (mit FFI) schwer zu kompilieren/installieren waren (man benötigt ein kleines lokales Linux – wie z.B. MSYS).

Seit längerer Zeit gibt es zudem die Möglichkeit lokal eine sogenannte Sandbox einzurichten, damit habe ich kaum mehr Probleme, aber das ist nicht die einzige Lösung.
Stack ist glaube ich die Zukunft einige sind aber extrem begeister von Nix – dazu kann ich leider nichts sagen – habe ich noch nicht ausprobiert.

bins / PATH

In jeden Fall sollte man dafür sorgen, dass die Programme (ghc, ghci, cabal, …) in der PATH Variable landen – wenn ihr Programme mit cabal installiert (z.B. Alex und Happy, aber auch ghc-mod oder cabal-install direkt (als Update)) solltet ihr den Platz wo das landet ebenfalls mit in den PATH aufnehmen – der globale Cache dafür landet unter Linux und co. normalerweise in ~/.cabal/bin, wenn ihr eine Sandbox verwendet dann eben lokal in ./.cabal-sandbox/bin – unter Linux setze ich mir hierfür dann normalerweise nur einen Symlink in ein Verzeichnis ~/bin das ich mir einmal in den Path aufgenommen habe – so funktioniert es praktisch alles in Sandboxes zu installieren – von ghc-mod bis Idris und Agda!

Unter Windows und MacOS erledigen das die Installer, die ich unten erwähne sowieso (ok: um die Sandbox-Geschichte müsst ihr euch trotzdem kümmern, falls ihr das macht).

Mein Vorschlag

Linux

Selbst nutze ich Linux Mint – bitte habt Verständnis, dass ich nicht auf jede Distro eingehen kann … ehrlich gesagt zeige ich euch hier auch nur die Ubuntu/Mint Variante – ich denke aber, dass jeder Linux Nutzer es schaffen wird sich seine Version von GHC zu besorgen – glaube nicht das es eine Distro gibt wo das nicht mit in den Paketen ist – wahrscheinlich uralt, aber für den Workshop ist das egal 😉

Persönlich hole ich mir hier einfach nur den GHC, alex, happy und cabal-install und zwar von hier: GHC Launchpad von Herbert V. Riedel – da gibt es eine schöne Anleitung dazu.

OSX

Ich habe nicht die Megaerfahrung mit Macs, aber ich habe auf meinen Spiel-MBP (den ich glaube ich 6 Monate nicht mehr an hatte) Haskell for Mac OS X installiert und das funktionierte wunderbar!

Windows

Hier nutze ich selbst den Minimum GHC Installer – die Plattform reicht für den Workshop aber auch, falls ihr es einfach haben wollt.

Hab ich es geschaft?

Ruft einfach euere Console bzw. Terminal auf und gebt ghci ein – wenn ihr mit sowas:


GHCi, version 7.10.2: http://www.haskell.org/ghc/ :? for help
Prelude>

begrüßt werdet seit ihr good to go für den Workshop

das nächste Mal

Sag ich was zu Editoren/IDEs (Spoiler: vergesst die IDEs lieber) …

Fragen einfach rein in die Comments (oder per Mail, Twitter, whatever)

Have FUN