9

cabal-install でパッケージをインストールすると、すべての依存関係も間接的にインストールされます。.cabal/packages直接インストールしなかったフォルダー内の特定のパッケージが与えられた場合、それが依存していた他のパッケージを見つける方法はありますか?

4

2 に答える 2

15

このコマンドをどこかで見つけて (今はどこか思い出せません)、定期的に使用して、インストール済みパッケージの依存関係グラフを生成します。

ghc-pkg dot | tred | dot -Tpng > pkgs.png

~/.ghcではなく、実際にはインストールされたパッケージ情報が含まれていることに注意してください~/.cabal

以下も使用できます。

ghc-pkg unregister <pkgname>

これは、このパッケージをアンインストールした場合に壊れるパッケージのリストを出力します。これは、実際に探しているものです。

$ 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)

アップデート

上記dot -Tsvg > pkgs.svgのコマンドで を使用すると、テキスト検索を使用することもできます (たとえば、ブラウザでファイルを開く場合)。

また、cabユーティリティは、依存関係や逆方向の依存関係などを表示するのに非常に便利です。

スタック ユーザーstack dot --externalの場合は、上記の代わりにプロジェクト ディレクトリから使用できますghc-pkg dot

于 2014-01-04T22:39:39.787 に答える
3

cabal-dbが役立つことがわかりました。たとえば、実行できます

cabal-db revdeps semigroupoids

そしてそれはあなたに言うでしょう

zippers: semigroupoids (>=4 && <5)
wl-pprint-extras: semigroupoids (>=3 && <5)
vector-instances: semigroupoids (>=3)
validation: semigroupoids (>=4.0)
transformers-abort: semigroupoids (>=1.2)
these: semigroupoids (>=1.0 && <4.1)

等...

于 2014-06-19T02:07:36.557 に答える