0

有没有办法列出Haskell cabal包安装的文件?换句话说:有没有办法列出与 Haskell 包关联的文件?

例如,在基于Debian的系统中,包括Ubuntu,可以使用dpkg -l列出所有包,并列出与dpkg -L package_name定包关联的文件

$ dpkg -L gzip
/.
/bin
/bin/gunzip
/bin/gzexe
/bin/gzip
/bin/uncompress
/bin/zcat
/bin/zcmp
/bin/zdiff
/bin/zegrep
/bin/zfgrep
/bin/zforce
/bin/zgrep
/bin/zless
/bin/zmore
/bin/znew
/usr
/usr/share
...

Arch Linux上,同样可以通过以下方式实现pacman -Ql package_name

$ pacman -Ql gzip
gzip /usr/
gzip /usr/bin/
gzip /usr/bin/gunzip
gzip /usr/bin/gzexe
gzip /usr/bin/gzip
gzip /usr/bin/uncompress
gzip /usr/bin/zcat
gzip /usr/bin/zcmp
gzip /usr/bin/zdiff
gzip /usr/bin/zegrep
gzip /usr/bin/zfgrep
gzip /usr/bin/zforce
gzip /usr/bin/zgrep
gzip /usr/bin/zless
gzip /usr/bin/zmore
gzip /usr/bin/znew
gzip /usr/share/
...

最后,使用Python 的 PIP可以pip show -f package_name显示与 package 关联的文件package_name1

cabal有没有办法对通过使用cabalor安装的软件包执行上述操作ghc-pkg?我知道我可以使用ghc-pkg listor列出包cabal list --installed,但不能列出与特定包关联的文件。

4

1 回答 1

2

您可以使用ghc-pkg describe <pkgname>获取已安装软件包文件的目录集合。受软件包安装影响的只有几件事不会被提及:

  1. GHC 包数据库本身已修改。ghc-pkg list将向您显示两个标准数据库的位置。
  2. GHC 不知道软件包安装的可执行文件。您可以使用cabal info <pkgname>来获取可执行文件的列表。
  3. 您的构建工具(即 cabal-install 或 stack)可能会保留包元数据和源的缓存;这些并不是真正意义上的“安装”——删除它们不会破坏任何东西——但它们是安装过程修改的文件系统的一部分。对于 cabal-install,此缓存默认为~/.cabal/packages; 我对堆栈知之甚少,无法很好地回答该工具。
于 2018-08-06T17:31:06.360 回答