GHC Cabal устанавливает hamlet с неясной ошибкой

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

Мне удалось скомпилировать 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

person Anupam Jain    schedule 23.05.2011    source источник
comment
Просто из любопытства, почему вы установили GHC из исходников? Может ли это быть причиной проблемы?   -  person Tarrasch    schedule 24.05.2011
comment
Мне пришлось это сделать, потому что общий бинарный файл GHC 7 не работал на веб-фракции, в то время как бинарный файл 6.12 работал. Я не помню точно, что это была за ошибка, но я попытался скомпилировать GHC 7 из исходников, и это сработало безболезненно.   -  person Anupam Jain    schedule 24.05.2011
comment
Итак, я только что установил GHC на другую (локальную) машину и понял, почему бинарный дистрибутив GHC не работает. После того, как я установил бинарный GHC, я получил ошибку - configure: error: Your installation of ghc does not appear to work. It cannot compile a simple program (see config.log for the details). If you installed ghc from a generic binary tarball then it is worth checking that you have the 'gmp' C library and header files installed. (On Debian-based systems this package is called libgmp3-dev.) Установка из исходного кода исправила это.   -  person Anupam Jain    schedule 01.06.2011
comment
Это не похоже на специфику веб-фракции или Гамлета. Я получаю: Loading package transformers-0.4.3.0 ... ghc: mmap 1400832 bytes at (nil): Operation not permitted ghc: Try specifying an address with +RTS -xm<addr> -RTS Failed to install vector-0.10.12.3 на ноутбуке Debian. Это кликовая песочница.   -  person STF    schedule 12.07.2015


Ответы (1)


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

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

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

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

Это гарантирует, что tmpdir установлен правильно, прежде чем пытаться установить какой-либо пакет Cabal.

person Anupam Jain    schedule 23.05.2011
comment
Это, так много этого. Я боролся с этим в течение нескольких дней! Я даже трижды перекомпилировал GHC7.0.4 и GHC7.4.1, пытаясь исправить Cabal, когда он даже не был сломан. +5 - person Xorlev; 25.04.2012
comment
Большое спасибо, из-за этого у меня были проблемы с установкой Gentoo. Gentoo использовал флаг noexec в /tmp. - person LambdaStaal; 02.12.2013
comment
По-видимому, каталог проекта (в моем случае это каталог Cabal Sandbox) также должен находиться ниже вашего домашнего каталога (символическая ссылка не работает). - person STF; 12.07.2015