2013-09-25 3 views
2

У меня установлена ​​Windows XP и Haskell Platform 2013. Когда я хочу скомпилировать свой код на каком-то компьютере, на котором на нем не установлена ​​платформа Haskell, и мне не разрешено ничего устанавливать, я могу скопировать свою платформу Haskell на флеш-карту USB и запустить ее на этом компьютере, и это просто работа хорошо.Переносная установка пакета на платформе Haskell с помощью Cabal на окнах

Но иногда мне нужны дополнительные пакеты, которые не являются частью стандартной сборки платформы Haskell.

Я могу просто установить его на свой персональный компьютер с помощью Cabal, но я не знаю, как их установить таким образом, чтобы они могли работать портативно, т.е. е. с моей USB-карты на не мой компьютер.

Я попытался это:

cabal install gnuplot --prefix "C:\Program Files\Haskell Platform\2013.2.0.0" 

Этот установленный пакет в папку платформы Haskell, но когда я запускаю Haskell Platform на другом компьютере, он не видел.

Я думаю, что я должен сделать файл конфигурации, который будет установлен в каталоге платформы Haskell, но я не знаю, как это сделать.

Пожалуйста, помогите мне решить эту проблему. Заранее спасибо!



Большое спасибо, Михаил Глушенковым! Все работает отлично сейчас.

Для удобства новичков, как я, что в поисках ответов, я просто описать инструкцию, что делать, чтобы иметь тот же результат:

0) Прочитайте инструкцию, прежде чем делать что-нибудь/

1) удалите все дополнительные пакеты, которые необходимы для установки переносных (с зависимостями): разрегистрировать эти пакеты с

ghc-pkg unregister gnuplot 

, а затем удалить пакет-файлы из которой он сохраняет. Также удалите все связанных файлов из "package.conf.d" папок. Для их поиска используйте

ghc-pkg list 

.

2) Run (возможно, это лишнее)

ghc-pkg recache 

.

3) Установите пакет в желаемый каталог на платформе haskell. Я сделал это в "C: \ Program Files \ Haskell Platform \ 2013.2.0.0 \ addlib":

cabal install gnuplot --prefix "C:\Program Files\Haskell Platform\2013.2.0.0\addlib" --global 

.

4) Измените каждый новый файл, связанный с установленными пакетами в "package.conf.d": замените "C: \ Program Files \ Haskell Platform \ 2013.2.0.0 \ addlib \ utility-ht-0.0.9 \ ghc -7.6.3 "в них:" $ topdir \ .. \ addlib \ utility-ht-0.0.9 \ ghc-7.6.3 ", i. е. «C: \ Program Files \ Haskell Platform \ 2013.2.0.0 \ addlib \" -> "$ topdir \ .. \ addlib \".

5) Запуск

ghc-pkg recache 

.

3a) Возможно, это будет работать лучше, а затем 3 (я его не тестировал). Если это так, не делайте 3, 4 и 5.

cabal install gnuplot --prefix "$topdir\..\addlib" --global 

.

End.

* UPD *

Я нашел некоторые глупые ошибки в данной инструкции (в 3а и 4). Исправлено.

3a не работает!

+0

Я никогда не устанавливал Haskell на окнах, так что, возможно, это просто то, что я не понимаю, но я не получаю бит префикса. Префикс, который вы поставляете, не находится на вашем USB-накопителе, почему вы ожидаете увидеть его на другом компьютере? – asm

+0

@AndrewMyers, я установил библиотеку в папку платформы Haskell и переместил папку платформы Haskell на флешку USB, так что физически библиотека была на другом компьютере. Проблема заключалась в том, чтобы сделать платформу Haskell видеть ее на другом компьютере. И я не знал, как это сделать, и поэтому я задал этот вопрос. –

ответ

3

Необходимо заменить абсолютные пути в файлах $GHCDIR\lib\package.conf.d\*.conf с относительными путями, ссылающимися на $topdir, а затем запустить ghc-pkg recache.

Посмотрите, как Haskell Platform's Windows installer does it.

+0

Спасибо, @MikhailGlushenkov, но похоже, что у меня нет файла, связанного с библиотекой gnuplot (что я, в частности, установил). Как я могу сделать этот файл? –

+0

Ну, я еще не могу редактировать предыдущий комментарий, поэтому я просто пишу: я имею в виду, у меня нет такого файла в каталоге, упомянутом вами. –

+2

@AnonImous Run 'ghc-pkg list'. Он покажет вам папки 'package.conf.d'. Кроме того, вам нужно запустить 'cabal install' с' --global', чтобы он устанавливался в глобальную пакетную БД. –

 Смежные вопросы

  • Нет связанных вопросов^_^