上限的一个常见问题是包作者不确定选择其依赖项的保守上限(例如基数)。对于用户来说,这往往是一个不受欢迎的选择,将来可能会被阻止使用此类软件包。
我最近意识到这个问题可能有一个解决方案,即作者将元数据更改推送到其他未更改的包,如此处所示。用户如何利用这一新功能?它是详细记录在某处还是实验性的?
用户只能通过要求包维护者对 Hackage 进行这样的依赖关系修订来利用该确切功能。当你确定一个依赖是不必要的保守时,一定要这样做,但要准备好它不会马上发生。
但是你不需要这个只是为了在你的机器上安装一个比“官方支持”的依赖项更新的包。只需使用
cabal install token-bucket --allow-newer base
或者,您可以不直接从 Hackage 安装,而是将源代码(通常来自 Github)拉到本地存储库中†</sup>
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
†</sup>如果不出意外,您可以简单地通过 获取源代码的确切 hackage 版本cabal fetch
,但 IMO 在对任何代码库进行更改时应始终使用本机版本控制系统。