52700.fb2
[4 of 4] Compiling Main
( src/Main. hs, dist/build/hello/hello-tmp/Main. o )
Linking dist/build/hello/hello ...
Installing library in /home/anton/. cabal/lib/hello-1.0/ghc-7.4. 1
Installing executable(s) in /home/anton/. cabal/bin
Registering hello-1.0...
268 | Глава 18: Средства разработки
Мы видим сообщения о процессе установки. После установки в текущей директории пакета появилась
директория dist, в которую были помещены скомпилированные файлы библиотеки. В последних строках
cabal сообщил нам о том, что он установил библиотеку в директорию:
Installing library in /home/anton/. cabal/lib/hello-1.0/ghc-7.4. 1
и исполняемый файл в директорию:
Installing executable(s) in /home/anton/. cabal/bin
С помощью различных флагов мы можем контролировать процесс установки пакета. Назначать дополни-
тельные директории, указывать куда поместить скомпилированные файлы. Подробно об этом можно почи-
тать в справке, выполнив в командной строке одну из команд:
cabal --help
cabal install --help
Если у вас не получилось сразу установить пакет не отчаивайтесь и почитайте сообщения об ошибках
из cabal, он информативно жалуется о забытых зависимостях и неспособности правильно прочитать файл с
описанием пакета.
Удаление библиотеки
Установленные с помощью cabal файлы видны из любого модуля. Имена модулей регистрируются гло-
бально. Если нам захочется установить библиотеку с уже зарегистрированным именем, произойдёт хаос.
Возможно прежняя библиотека нам уже не нужна. Как нам удалить её? Посмотрим на решение для компи-
лятора ghc. Мы можем посмотреть список всех зарегистрированных в ghc библиотек с помощью команды:
$ ghc-pkg list
Cabal-1.8.0.6
array-0.3.0.1
base-4.2.0.2
...
...
Появится длинный список с именами библиотек. Для удаления одной из них мы можем выполнить ко-
манду:
ghc-pkg unregister имя-библиотеки
Например так мы можем удалить только что установленную библиотеку hello:
$ ghc-pkg unregister hello
Репозиторий пакетов Hackage
Если у нас подключен интернет, то мы можем воспользоваться наследием сообщества Haskell и уста-
новить пакет с Hackage. Там расположено много-много-много пакетов. Любой разработчик Haskell может
добавить свой пакет на Hackage. Посмотреть на пакеты можно на сайте этого репозитория:
http://hackage.haskell.org
Если для вашей задачи необходимо выполнить какую-нибудь довольно общую задачу, например написать
тип красно-чёрных деревьев или построить парсер или возможно вам нужен веб-сервер, поищите этот пакет
на Hackage, он там наверняка окажется, ещё и в нескольких вариантах.
Для установки пакета с Hackage нужно просто написать
cabal install имя-пакета
Возможно нам нужен очень новый пакет, который был только что залит автором на Hackage. Тогда вы-
полняем: