独立子集的套餐包集
给定一套cabal包,有没有办法自动计算独立包的子集? 换句话说,包的子集将足以安装它们全部。
对于[network,parsec]
答案是[network]
因为它的network
依赖于parsec
。
对于[network,containers]
,答案是[network,containers]
因为:
-
network
不依赖于containers
- 所有
network
的依赖不依赖containers
-
containers
不依赖于network
- 所有
containers
的依赖不依赖于network
find2个包装的答案并不难。 真正有趣的是find独立的集[containers, directory, filepath, lens, xml, http-conduit, regex-posix, monad-control, unordered-containers, glib, hashable, hspec, split, aeson, attoparsec, stm, QuickCheck]
。
从答案我期望一些function的基础上, ∷ [Packages] → IO [Packages]
。
Cabal正在转向更类似于NPM的模型,这将使依赖parsing变得简单得多。 每个已安装的软件包都会保留其依赖项的本地副本,交换一点磁盘空间,以便安装具有相互独立的软件包版本控制要求的多个全局软件包。
在这个模型下,需要安装一组包==
的包的子集。 虽然一个可能是另一个的依赖关系,但是每个安装的副本都会保留它自己的本地依赖副本,所以Cabal不会再考虑这种依赖方式。