Portabler Haskell-Compiler

6

Ich habe ein Haskell-Programm, das ich auf dem Cluster meiner Schule ausführen möchte, aber die Version von GHC ist zu alt und wird nicht aktualisiert. Ich möchte es irgendwie mit meinem Quellcode packen, aber standardmäßig muss ein Installationsskript ausgeführt werden. Gibt es eine Möglichkeit für mich, eine aktuelle ausführbare Haskell-Compiler-Datei zu erhalten, die weiterhin funktioniert, wenn ich sie an einen anderen Computer sende?

Ich könnte meinen Code einfach lokal übergreifend kompilieren und die ausführbare Datei übermitteln, aber es wäre mir lieber, wenn er auf dem Cluster selbst erstellt werden könnte.

Matthew Piziak
quelle

Antworten:

11

Als ich dieses Problem hatte, habe ich GHC in meinem Home-Verzeichnis installiert:

$ wget http://www.haskell.org/ghc/dist/7.6.1/ghc-7.6.1-i386-unknown-linux.tar.bz2
$ tar xjvf ghc-7.6.1-i386-unknown-linux.tar.bz2
$ cd ghc-7.6.1-i386-unknown-linux
$ ./configure --prefix=/home/user/bin/ghc-7.6.1
$ make install
$ export PATH=/home/user/bin/ghc-7.6.1/bin:$PATH

Danach können Sie den neuesten GHC für Ihr Konto verwenden.

Mikhail Glushenkov
quelle
2
Bis vor kurzem hatte ich ungefähr zehn GHCs auf meinem System installiert, die meisten davon in meinem Home-Verzeichnis. :]
Camccann
Vielen Dank! Idealerweise möchte ich, dass es jedem Benutzer möglich ist, mein Programm makein meinem Quellverzeichnis zu kompilieren , aber dies ist ein Schritt nach oben!
Matthew Piziak
2
@MatthewPiziak Wenn Sie Ihre lokale ghc-Installation global lesbar (und gegebenenfalls ausführbar) machen, kann jeder Benutzer sie verwenden, solange er über den Pfad verfügt.
Oh! Wie würde ich das machen? chmodauf die ausführbare Datei?
Matthew Piziak
1
Genau, und auch die Bibliotheken. Wenn Sie das Installationsverzeichnis aus dieser Antwort verwenden, ist dies die einfache Lösung chmod -R o+rX /home/user/bin/ghc-7.6.1. Natürlich muss / home / user / bin auch lesbar sein. Wahrscheinlich möchten Sie Ihre Einstellungen in cabal anpassen, um Bibliotheken standardmäßig auch auf der globalen Datenbank zu installieren, da die "globale Datenbank" tatsächlich für jede ghc-Installation lokal ist. Wenn Sie dann ein Paket auf der globalen Datenbank Ihres lokalen ghc installieren, haben alle anderen Benutzer Ihres ghc ebenfalls Zugriff.