2011-05-23 10 views
7

Estoy tratando de instalar un Hamlet en un servidor compartido webfaction para que pueda compilar y ejecutar mi aplicación web allí. Estoy usando Yesod para desarrollar la aplicación.GHC cabal install hamlet falla con un error oscuro

Logré compilar GHC 7 desde la fuente y la instalación cabal de bootstrapped. Luego hice cabal install hamlet y esperaba que funcionara. ¡Sin suerte!

Aparece el siguiente mensaje de error extraño de cabal/GHC. ¿Podría alguien ayudarme?

$ 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 
+0

Solo por curiosidad, ¿por qué instalaste GHC desde la fuente? ¿Podría haber causado el problema? – Tarrasch

+0

Tuve que hacer eso porque el genérico GHC 7 binario no funcionaba en webfaction mientras que 6.12 binary lo hacía. No recuerdo cuál fue el error exacto, pero intenté compilar GHC 7 desde la fuente y funcionó sin problemas. –

+0

Bien, acabo de hacer una instalación de GHC en una máquina diferente (local) y me di cuenta de por qué la distribución binaria de GHC no funcionaba. Después de instalar el GHC binario, recibí el error - 'configure: error: su instalación de ghc no parece funcionar. No puede compilar un programa simple (ver config.log para más detalles). Si instaló ghc desde un tarball binario genérico, vale comprobando que tiene instalada la biblioteca C 'gmp' y los archivos de encabezado. (En los sistemas basados ​​en Debian este paquete se llama libgmp3-dev.) ' Instalando desde la fuente fija eso. –

Respuesta

8

Bueno, parece que he resuelto el problema y lo estoy viendo aquí con la esperanza de que ayude a los demás.

El problema es que webfaction no le permite ejecutar archivos almacenados en/tmp. El mensaje de error de Cabal es muy confuso.

La solución es establecer la variable de entorno en un directorio en su homepath (donde no se aplica dicha restricción) antes de ejecutar la instalación de cabal. Simplemente creado un alias -

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

Esto asegura que el tmpdir está ajustado correctamente antes de intentar instalar cualquier paquete de Cabal.

+1

Esto, tanto esto. ¡He estado luchando con esto por días! Incluso recompuse GHC7.0.4 y GHC7.4.1 tres veces intentando arreglar cabal cuando ni siquiera estaba roto. +5 – Xorlev

+1

Muchas gracias, tuve problemas con mi instalación de Gentoo debido a esto. Gentoo estaba usando el indicador 'noexec' en/tmp. – LambdaStaal

+0

Aparentemente, el directorio de proyecto (dir de cabal de arena en mi caso) también debe estar debajo del directorio de inicio (el enlace simbólico no funciona). – STF