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