`cabal update`由于'内存不足'而失败

时间:2013-12-25 04:56:55

标签: haskell cabal haskell-platform

以下是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,我无法生成缓存文件! cabal能以便宜的方式在本地生成00-index.cache吗?

cabal --version

cabal-install version 1.16.0.2
using version 1.16.0 of the Cabal library

3 个答案:

答案 0 :(得分:19)

我遇到了在AWS上运行微实例的类似问题(没有运行cabal更新,而是编译我自己的程序)。我按照this link中的建议创建了一个交换空间,然后就可以了。

从链接:

> dd if=/dev/zero of=/tmp/swap bs=1M count=1024
> mkswap /tmp/swap
> swapon /tmp/swap

dd命令在/ tmp目录下创建一个名为“swap”的交换文件,大小为1024MB(1GB)。

使用mkswap命令将此文件作为交换文件。

使用swapon命令启用新创建的交换文件。

This link提供了有关交换空间的更多信息。

答案 1 :(得分:1)

您可以将00-index.cache放在适当的位置,cabal-install也可以使用它。要找出放置位置,请查看remote-repo-cacheremote-repo~/.cabal/config的值;缓存应该放在remote-repo-cache目录中远程repo的nick之后命名的目录中。例如,这是我的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

答案 2 :(得分:-3)

尝试为您正在运行cabal update的计算机添加更多内存。

我曾经尝试安装GHC并在DigitalOcean底层服务器上编译一些Haskell,由于缺少可用内存,编译总是失败。再次尝试在装备更完善的服务器上修复此问题。