我正在尝试安装需要与我安装的版本不同的基础版本的软件包(我有4.6.0.0
,他们需要< 4.6
)。如何在我的系统上安装这些?
编辑:这些包实际上需要较旧的包才能构建,而不仅仅是 .cabal 约束。
由于您无法重新安装base
,因此在更新之前安装这些软件包的唯一方法是获取源代码,
cabal unpack foo
然后编辑foo.cabal
,更改那里的上限base
,增加包版本(附加 a .1
)以便在安装其他包时cabal
不会认为它已损坏,因为.cabal
它知道的文件(来自包索引)说它需要不同的版本,base
和
cabal install
从你解压到的目录。
由于 base-4.6 有一些重大变化;和超类已从 中删除,并且Eq
不再作为超类,可能需要通过添加来修复代码,或添加某些函数的约束以使包编译。Show
Num
Bits
Num
Eq
Show
Num
这很不方便,但要在几周内使用最新的 GHC 版本来更新自己的价格。
如果您只想让您的程序之一依赖这些软件包,您可以cabal-dev
使用cabal
. 前者将包的本地副本安装cabal-dev
在当前目录的路径中。要安装它,只需运行:
cabal install cabal-dev
为了可移植性,您可以在 makefile 中添加类似这样的内容:
CABAL ?= cabal
build :
$(CABAL) build --builddir=$(BUILD_PATH)
然后在您的 Bash 设置中:
CABAL=cabal-dev
export CABAL
如果一个包与您当前拥有的基础不兼容(即仅更改约束是不够的),您唯一的选择是自己移植该包或使用提供正确版本基础的旧 ghc。
不过,您可能需要先与包维护者联系。一个开发分支可能已经支持你需要的东西,他们只需要一点刺激就可以发布它。