hug*_*omg 9 haskell ghc cabal cabal-install ghc-pkg
使用cabal-install安装软件包时,它还会间接安装所有依赖项.鉴于.cabal/packages我没有直接安装的文件夹中的某个包,有没有办法找到其他包的依赖性?
Sha*_*eep 15
我在某个地方找到了这个命令(现在不记得了)并定期使用它来生成我安装的包的依赖图:
ghc-pkg dot | tred | dot -Tpng > pkgs.png
Run Code Online (Sandbox Code Playgroud)
请注意,它实际上~/.ghc包含已安装的包信息,而不是~/.cabal.
您还可以使用:
ghc-pkg unregister <pkgname>
Run Code Online (Sandbox Code Playgroud)
这将打印一个包列表,如果你卸载了这个包,它会破坏,这实际上是你正在寻找的:
$ ghc-pkg unregister aeson
ghc-pkg: unregistering aeson would break the following packages: criterion-0.8.0.0 yesod-1.2.4 .... (use --force to override)
Run Code Online (Sandbox Code Playgroud)
使用dot -Tsvg > pkgs.svg上面的命令还允许您使用文本搜索(如果你在浏览器中打开文件,例如).
此外,cab实用程序对于显示依赖性和反向依赖性等非常有用.
对于堆栈,stack dot --external可以从项目目录中使用用户来代替上述用户ghc-pkg dot.