52700.fb2 Учебник по Haskell - читать онлайн бесплатно полную версию книги . Страница 298

Учебник по Haskell - читать онлайн бесплатно полную версию книги . Страница 298

( src/Hello. hs, dist/build/hello/hello-tmp/Hello. o )

[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. Тогда вы-

полняем: