如何获取Hackage包的更新上限?

时间:2017-10-07 21:30:43

标签: haskell hackage

上限的一个常见问题是包作者不确定选择其依赖关系的保守上界(例如base)。对于可能在将来可能无法使用此类软件包的用户来说,这往往是一个不受欢迎的选择。

我最近意识到这个问题可能有一个解决方案,其中作者推送元数据更改,否则不会更改包as seen here。用户如何利用这一新功能?它是在某处详细记录还是实验性的?

1 个答案:

答案 0 :(得分:2)

用户只能通过要求软件包维护者在Hackage上进行这样的依赖修订来利用这一特性。当你确定依赖是不必要的保守时,一定要做到这一点,但要做好准备,不会马上发生。

但是你不需要需要这只是为了在你的机器上安装一个包含比“官方支持”更新的依赖项的包。只需使用

cabal install token-bucket --allow-newer base

或者,您可以直接从Hackage安装源代码(最常见的是从Github)到本地存储库

git clone git@github.com:hvr/token-bucket.git
cd token-bucket

...对您想要的依赖项应用任何更改

sed -i 's/\(base[^<]*\)<4.10/\1<4.11/' token-bucket.cabal

...并从该本地副本安装:

cabal install

如果没有别的,您只需通过cabal fetch获取源的确切hackage版本,但IMO应该始终使用本机版本控制系统对任何代码库的更改。