2014-10-12 3 views
2

Предположим, что я запустил cabal sandbox init .. cabal install -j some-package и получил сбой сборки в одной из зависимостей some-package. Один из способов решения этой проблемы - сообщить автору об ошибке, а затем дождаться, пока они выпустят новую версию, но процесс может быть слишком медленным. Когда причина сбоя очевидна (что часто бывает), я хочу запустить свой текстовый редактор и исправить его самостоятельно.Haskell Cabal: локально исправить сломанную упаковку DL'ed из Hackage

Однако, когда я запустил find(1) для имени файла из журнала ошибок .cabal-sandbox кэш-каталог, я не мог найти .hs файлов. Выполняет ли команда cabal весь исходный каталог, когда GHC успешно или безуспешно завершает его выполнение? Как я могу вмешаться в выполнение задач cabal? Или, есть ли какой-либо стандартизованный способ достичь моей первоначальной цели - самостоятельно установить пакеты программ из Hackage?

ответ

1

Вы можете загрузить исходный код пакета с помощью cabal get <package>, затем исправить его и установить в песочницу с помощью cabal install <package-dir>.

E.g.

$ cabal get split 
Unpacking to split-0.2.2/ 
$ vim split-0.2.2/split.cabal 
$ cabal install ./split-0.2.2 
+0

Отлично, я дам ему попробовать! Я не знал, что 'cabal' принимает локальный путь к файлу. – nodakai

+1

Сначала я думал, что это не сработало, но оказалось, что символ '/' в конце имени пакета был необходим для 'cabal', чтобы узнать, что это локальный каталог, а не Hackage. – nodakai

+0

О, это правда, я обновлю свой ответ –