Haskell Cabal:如何忽略依赖关系

时间:2011-06-10 22:13:23

标签: haskell dependencies cabal

我正在尝试安装一个软件包(nymphaea,因为它发生)。这取决于我的早期版本的基础。我并不热衷于降级我的基础库,因此我想尝试忽略这种依赖关系,看看情况如何。

有没有办法告诉cabal错过特定的依赖?

更新:编辑cabal文件后,我该怎么办?据我所知,Cabal没有明显的方法将其指向文件,也无法手动输入cabal文件。

[如下所示,显然我应该在包含已编辑的cabal文件的目录中调用cabal install]

更新2:不幸的是,cabal给了我一个关于我需要的软件包版本的奇怪错误:

$ cabal install -v --upgrade-dependencies time
Reading available packages...
Resolving dependencies...
In order, the following would be installed:
time-1.2.0.5 (new version)
Extracting
C:\Users\Marcin\AppData\Roaming\cabal\packages\hackage.haskell.org\time\1.2.0.5\time-1.2.0.5.tar.gz
to C:\Users\Marcin\time-1.2.0.54736...
Creating C:\Users\Marcin\time-1.2.0.54736\time-1.2.0.5\dist\setup (and its
parents)
C:\Program Files (x86)\Haskell Platform\2011.2.0.1\bin\ghc.exe --make C:\Users\Marcin\time-1.2.0.54736\time-1.2.0.5\Setu
p.hs -o C:\Users\Marcin\time-1.2.0.54736\time-1.2.0.5\dist\setup\setup.exe -odir C:\Users\Marcin\time-1.2.0.54736\time-1
.2.0.5\dist\setup -hidir C:\Users\Marcin\time-1.2.0.54736\time-1.2.0.5\dist\setup -i -iC:\Users\Marcin\time-1.2.0.54736\
time-1.2.0.5 -package Cabal-1.10.1.0
<command line>: cannot satisfy -package Cabal-1.10.1.0:
    Cabal-1.10.1.0-55f781465ee9f32289755ad706c71f0f is unusable due to missing or recursive dependencies:
      directory-1.1.0.0-3a2367d72569467a8af8a231656ff1b8 process-1.0.1.5-b3dded8e54a2e13d22af410bdcfafff4
    (use -v for more information)
World file is already up to date.
cabal.exe: Error: some packages failed to install:
time-1.2.0.5 failed during the configure step. The exception was:
ExitFailure 1

2 个答案:

答案 0 :(得分:7)

跟进对唐的回答的评论:

首先,从Hackage中获取包。

$ cabal unpack nymphaea

然后编辑.cabal文件并将base <= 4.1.0.0更改为base > 3 && < 5

$ cd nymphaea-0.3
$ vim nymphaea.cabal

现在,尝试安装它。

$ cabal install

在安装了所需的Debian软件包后,我在Ubuntu Natty上使用Haskell Platform 2011.2.0.1进行了这项更改。

答案 1 :(得分:4)

您必须编辑与程序包关联的.cabal文件,并删除您看到的基础上的所有约束。例如,改变

base < 3

base >= 3 && < 5

看看它是否编译。如果它有效,你可能会碰到版本并让维护者知道。如果他们没有回复,您可以自己将固定版本上传到Hackage。

相关问题