`cabal update` не удалось из-за` из памяти`
Вот что выводит cabal update
:
Downloading the latest package list from hackage.haskell.org
cabal: out of memory (requested 2097152 bytes)
Причиной может быть нехватка памяти. Что насчет tail 00-index.cache
?
pkg: charade 0.1 b# 46384
pkg: charset 0.0 b# 46390
pkg: charset 0.1 b# 46393
pkg: charset 0.2.0 b# 46396
pkg: charset 0.2.1 b# 46399
pkg: charset 0.2.2 b# 46402
pkg: charset 0.2.3 b# 46405
pkg: charset 0.3 b# 46408
pkg: charset 0.3.0.1 b# 46412
Я могу загрузить 00-index.tar.gz
и загрузить 00-index.tar
. Однако из-за out of memory
я не могу создать файл кеша! Может ли кабал генерировать 00-index.cache
локально дешевым способом?
cabal --version
cabal-install version 1.16.0.2
using version 1.16.0 of the Cabal library
Ответы
Ответ 1
У меня возникла аналогичная проблема с запуском микро-экземпляра на AWS (не выполняется обновление кэша, но скомпилирование моей собственной программы). Я выполнил предложения этой ссылки, чтобы создать пространство подкачки, и это сделало трюк.
Из ссылки:
> dd if=/dev/zero of=/tmp/swap bs=1M count=1024
> mkswap /tmp/swap
> swapon /tmp/swap
Команда dd создает файл подкачки с именем "swap" в каталоге /tmp размером 1024 МБ (1 ГБ).
Сделайте этот файл как файл подкачки, используя команду mkswap.
Включить вновь созданный файл подкачки с помощью команды swapon.
Эта ссылка содержит дополнительную информацию об областях подкачки.
Ответ 2
Вы можете просто положить 00-index.cache
в нужное место, а cabal-install
будет использовать его просто отлично. Чтобы узнать, куда его поместить, просмотрите значение remote-repo-cache
и remote-repo
в ~/.cabal/config
; кеш должен находиться в каталоге, названном именем удаленного репо в каталоге remote-repo-cache
. Например, здесь фрагмент моего config
:
remote-repo: hackage.haskell.org:http://hackage.haskell.org/packages/archive
remote-repo-cache: /home/dmwit/.cabal/packages
и мой кеш находится в /home/dmwit/.cabal/packages/hackage.haskell.org/00-index.cache
.
Ответ 3
Попробуйте добавить больше памяти на компьютер, на котором выполняется обновление кэбля.
Я когда-то пытался установить GHC и скомпилировать Haskell на сервере нижнего уровня DigitalOcean, и компиляция всегда была неудачной из-за нехватки доступной ОЗУ. Проблема снова была решена на более хорошо оборудованном сервере.