cabal install ghc невозможно: переполнение кучи

Я пытаюсь следить за лекциями Plutus Pioneer и получаю следующее сообщение об ошибке Моя система: образ Ubuntu Linux Docker, работающий на MacOS. Я установил пакет Haskell на изображение отсюда: https://www.haskell.org/platform/linux.html

используя эту строку в моем Dockerfile: RUN apt-get install -y haskell-platform

Похоже, это устанавливает Cabal версии 2.4.

Когда я клонирую репозиторий кода для лекций: https://github.com/input-output-hk/plutus-pioneer-program, а затем перехожу в каталог week01 и пробую cabal buildкак и на лекции, я получаю зависимости, а не ошибки. Первой отсутствующей зависимостью является 'aeson', которая, кажется, устанавливается, если я запускаю cabal install aeson.

Последующие попытки сборки терпят неудачу из-за того, что «база» зависимости является неправильной версией.

Тогда я подумал, может быть, если я обновлю Cabal до версии 3.4, это может помочь, поэтому я попробовал cabal install cabal-install, но и здесь есть ошибки:

      Theexception was:ExitFailure (-9)

This may be due to an out-of-memory condition.

Итак, я погуглил еще немного и попробовал эту командную строку: cabal install --ghc-options="+RTS -M600M" -j1 cabal-installотсюда /questions/45724864/kabal-ustanavlivaet-kriterij-nehvatki-pamyati/45724881#45724881

Кажется, это идет дальше, но теперь я нахожусь в этой ошибке:

      ghc: panic! (the 'impossible' happened)  
(GHC version 8.6.5 for x86_64-unknown-linux):   heap overflow

Если у кого-то есть идеи, как это исправить, мы будем признательны. Нужно ли мне добавить больше ОЗУ в образ Docker Ubuntu? В настоящее время он имеет 1,9 ГБ памяти и 1,7 ГБ свободно. спасибо, м

1 ответ

Я исправил это, увеличив параметр RTS:

cabal install --ghc-options="+RTS -M1000M" -j1 cabal-install

Ну собственно все скомпилировал, но cabal --versionпо-прежнему говорит 2.4, а не 3.4. Также было это предупреждение:

      Warning: could not create a symlink in /root/.cabal/bin for cabal because the

file exists there already but is not managed by cabal. You can create a

symlink for this executable manually if you wish. The executable file has been

installed at /root/.cabal/bin/cabal
Другие вопросы по тегам