2011-05-23 4 views
7

Я пытаюсь установить Hamlet на общий сервер webfaction, чтобы я мог скомпилировать и запустить там свое веб-приложение. Я использую Yesod для разработки приложения.Сбой GCC cabal с ошибкой неясной

Мне удалось собрать GHC 7 из исходной и загрузочной инсталляции. Затем я сделал cabal install hamlet и ожидал, что он сработает. Не повезло!

Я получаю следующее странное сообщение об ошибке от cabal/GHC. Может ли кто-нибудь помочь мне?

$ 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

Просто из любопытства, почему вы установили GHC из источника? Может, это вызвало проблему? – Tarrasch

+0

Мне пришлось это сделать, потому что общий двоичный код GHC 7 не работал на webfaction, а бинарный файл 6.12. Я не помню, какова была точная ошибка, но я попытался собрать GHC 7 из источника, и он работал безболезненно. –

+0

Хорошо, я просто сделал установку GHC на другой (локальной) машине, и я только понял, почему бинарное распределение GHC не работает. После того, как я установил двоичный GHC, я получил ошибку - 'configure: error: Ваша установка ghc не работает. Он не может скомпилировать простую программу (подробности см. В config.log). Если вы установили ghc из общего двоичного tarball, то стоит , проверяя, что у вас установлена ​​библиотека gmp и C и файлы заголовков. (В системах на базе Debian этот пакет называется libgmp3-dev.) ' Установка с исходного исправления. –

ответ

8

Хорошо, я, кажется, решил проблему и отмечаю ее здесь, надеясь, что она поможет другим.

Проблема в том, что webfaction не позволяет выполнять файлы, хранящиеся в/tmp. Сообщение об ошибке из cabal очень смущает.

Исправление состоит в том, чтобы установить переменную окружения в каталог в вашем домашнем пути (если такое ограничение не применяется) перед запуском установки cabal. Я просто создал псевдоним -

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

Это гарантирует, что TMPDIR правильно установлена, прежде чем пытаться установить любого Кабалы пакета.

+1

Это, так много. Я боролся с этим в течение нескольких дней! Я даже перекомпилировал GHC7.0.4 и GHC7.4.1 три раза, пытаясь исправить cabal, когда он даже не был сломан. +5 – Xorlev

+1

Большое спасибо, из-за этого у меня были проблемы с установкой Gentoo. Gentoo использовал флаг «noexec» в/tmp. – LambdaStaal

+0

Очевидно, что проект dir (cabal sandbox dir в моем случае) должен быть ниже вашего домашнего каталога (symlink не работает). – STF