Как вывести список файлов, установленных пакетом Haskell Cabal?
Есть ли способ вывести список файлов, установленных пакетом Cabal для Haskell? Другими словами: есть ли способ перечислить файлы, связанные с пакетом 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/
...
Наконец, используя PIP Python, можно использовать pip show -f package_name
показать файлы, связанные с пакетом package_name
, 1
Есть ли способ сделать выше для пакетов, установленных через cabal
используя либо cabal
или же ghc-pkg
? Я знаю, что могу перечислить пакеты, используя ghc-pkg list
или же cabal list --installed
, но не как перечислить файлы, связанные с конкретными пакетами.
1 ответ
Ты можешь использовать ghc-pkg describe <pkgname>
получить коллекцию каталогов, в которые были установлены файлы пакета. Установка пакета зависит только от нескольких вещей, которые не будут упомянуты в этом:
- Сама база данных GHC модифицирована.
ghc-pkg list
покажет вам расположение двух стандартных баз данных. - Исполняемые файлы, установленные пакетом, не известны GHC. Ты можешь использовать
cabal info <pkgname>
чтобы получить список исполняемых файлов. - Ваш инструмент сборки (например, cabal-install или stack), вероятно, хранит кэш метаданных и источников пакета; на самом деле они не "установлены" в каком-либо значимом смысле - их удаление ничего не нарушит - но они являются кусочками файловой системы, измененной в процессе установки. Для cabal-установки этот кеш по умолчанию
~/.cabal/packages
; Я не знаю достаточно о стеке, чтобы ответить об этом инструменте хорошо.