我试图安装需要与我安装的版本不同的版本的软件包(我有4.6.0.0
,它们需要< 4.6
)。我怎样才能在我的系统上安装这些?如果库需要不同版本的`base`,该怎么办?
编辑:这些包实际上需要较旧的包才能构建,而不仅仅是作为.cabal约束。
我试图安装需要与我安装的版本不同的版本的软件包(我有4.6.0.0
,它们需要< 4.6
)。我怎样才能在我的系统上安装这些?如果库需要不同版本的`base`,该怎么办?
编辑:这些包实际上需要较旧的包才能构建,而不仅仅是作为.cabal约束。
既然你可以重新安装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版本几个星期自己最新。
如果您只是想让其中一个程序依赖于这些软件包,则可以使用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。
虽然你可能想首先与包维护者核对一下。一个开发分支可能已经支持你所需要的,他们只需要一点点刺激来释放它。
如果我这样做,我会收到一条消息,告诉我它无法满足base的约束,并终止安装。 – bfops
什么?编辑'.cabal'文件以允许base-4.6? –
@RobotGymnast您试图安装哪个软件包? –