以下是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
答案 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-cache
中remote-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,由于缺少可用内存,编译总是失败。再次尝试在装备更完善的服务器上修复此问题。