7 Stimmen

GHC cabal install hamlet schlägt mit einem obskuren Fehler fehl

Ich versuche, ein Hamlet auf einem gemeinsam genutzten Webfaction-Server zu installieren, damit ich meine Webanwendung dort kompilieren und ausführen kann. Ich verwende Yesod, um die Anwendung zu entwickeln.

Ich habe es geschafft, GHC 7 aus den Quellen zu kompilieren und cabal zu installieren. Als nächstes habe ich cabal install hamlet und erwartet, dass es funktioniert. Kein Glück!

Ich erhalte die folgende seltsame Fehlermeldung von cabal/GHC. Kann mir jemand weiterhelfen?

$ cabal install hamlet                       Resolving dependencies...
Configuring hamlet-0.8.2...
Preprocessing library hamlet-0.8.2...
Building hamlet-0.8.2...
[ 1 of 14] Compiling Text.MkSizeType  ( Text/MkSizeType.hs, dist/build/Text/MkSizeType.o )
[ 2 of 14] Compiling Text.Shakespeare ( Text/Shakespeare.hs, dist/build/Text/Shakespeare.o )
[ 3 of 14] Compiling Text.Hamlet.Parse ( Text/Hamlet/Parse.hs, dist/build/Text/Hamlet/Parse.o )

Text/Hamlet/Parse.hs:113:13:
    Warning: A do-notation statement discarded a result of type String.
         Suppress this warning by saying "_ <- ($) try string "!--"",
         or by using the flag -fno-warn-unused-do-bind
[ 4 of 14] Compiling Text.Hamlet.Quasi ( Text/Hamlet/Quasi.hs, dist/build/Text/Hamlet/Quasi.o )
[ 5 of 14] Compiling Text.Css         ( Text/Css.hs, dist/build/Text/Css.o )
[ 6 of 14] Compiling Text.Cassius     ( Text/Cassius.hs, dist/build/Text/Cassius.o )
Loading package ghc-prim ... linking ... done.
Loading package integer-gmp ... linking ... done.
Loading package base ... linking ... done.
Loading package array-0.3.0.2 ... linking ... done.
Loading package containers-0.4.0.0 ... linking ... done.
Loading package pretty-1.0.1.2 ... linking ... done.
Loading package template-haskell ... linking ... done.
Loading package filepath-1.2.0.0 ... linking ... done.
Loading package old-locale-1.0.0.2 ... linking ... done.
Loading package old-time-1.0.0.6 ... linking ... done.
Loading package unix-2.4.2.0 ... linking ... done.
Loading package directory-1.1.0.0 ... linking ... done.
Loading package process-1.0.1.5 ... linking ... done.
Loading package bytestring-0.9.1.10 ... linking ... done.
Loading package transformers-0.2.2.0 ... linking ... done.
Loading package mtl-2.0.1.0 ... linking ... done.
Loading package parsec-3.1.1 ... linking ... done.
Loading package failure-0.1.0.1 ... linking ... done.
Loading package deepseq-1.1.0.2 ... linking ... done.
Loading package text-0.11.0.8 ... linking ... done.
Loading package blaze-builder-0.3.0.1 ... linking ... done.
Loading package blaze-html-0.4.1.1 ... linking ... done.
Loading package ffi-1.0 ... linking ... done.
ghc: mmap 36864 bytes at (nil): Operation not permitted
ghc: Try specifying an address with +RTS -xm<addr> -RTS
cabal: Error: some packages failed to install:
hamlet-0.8.2 failed during the building phase. The exception was:
ExitFailure 1

8voto

Anupam Jain Punkte 7691

Okay, ich scheine das Problem gelöst zu haben und schreibe es hier auf, in der Hoffnung, dass es anderen hilft.

Das Problem ist, dass webfaction es nicht erlaubt, Dateien auszuführen, die in /tmp gespeichert sind. Die Fehlermeldung von cabal ist sehr verwirrend.

Die Lösung besteht darin, die Umgebungsvariable auf ein Verzeichnis in Ihrem Homepath zu setzen (wo keine solche Einschränkung gilt), bevor Sie cabal install ausführen. Ich habe einfach einen Alias erstellt -

alias cabalinstall='export TMPDIR=~/tmp; cabal install'

Dadurch wird sichergestellt, dass das tmpdir korrekt gesetzt ist, bevor versucht wird, ein cabal-Paket zu installieren.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X