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