Вопрос

Итак, это немного личная проблема, но, возможно, у людей будут хорошие советы или обходные пути.

Проблема заключается в установке Cabal-Install и Haskell-Platform при Debian.

Когда ты apt-get install haskell-platform, он поставляется с cabal-install, и его команда cabal доступен.

Теперь это cabal-install не в курсе:

> which cabal
/usr/bin/cabal
> /usr/bin/cabal --version
cabal-install version 0.8.0
using version 1.8.0.2 of the Cabal library

Но мое понимание бега cabal update это то, что он обновляет CABAL, но, поскольку это не «Debian Thingy», он выражает это в ~/.cabal/bin/.

> ~/.cabal/bin/cabal --version
cabal-install version 0.8.2
using version 1.8.0.2 of the Cabal library

Теперь у моей системы есть 2 кабины, и я получаю, набравшись cabal Это не тот, который я хочу использовать ... потому что он будет продолжать обновлять другого, а не себя, и поэтому неэффективен.

Так что я сделал, так это то, что я подсеивал это в своем ~/.bashrc:

alias cabal='~/.cabal/bin/cabal'

В настоящее время:

> cabal --version
cabal-install version 0.8.2
using version 1.8.0.2 of the Cabal library

Итак, мои последние вопросы:

  • Есть ли репозиторий DEB, который имеет CABAL 0.8.2?
  • Может ли мое текущее решение привести к проблемам? (Например, which cabal все еще указывает на моего бесполезного /usr/bin/cabal, так что, если сценарии используют эту команду, они будут одурачены ...)
  • Кто -то придумал лучшее решение? (Моя немного специально, но это все, что я мог бы прийти к своим плохом знании о том, что происходит за кулисами ...)
  • Пожалуйста, поправьте меня, если что -нибудь, что я говорю выше, неправильно или неточно.
Это было полезно?

Решение

Что я делаю, так это установка CABAL с --global флаг. Это установит CABAL в /usr/local/bin/cabal, Таким образом, это всегда будет засорять кабину Debian Packages.

Другим способом, как правило, избегать пакетов Debian и устанавливать платформу Haskell прямо из своего источника. Этот подход также лучше, если вы всегда хотите иметь последние выпуски Haskell Libs.

Другие советы

Я держу свой пользователь-локальный $HOME/.cabal/bin перед PATHАнкет Я устанавливаю только ghc6, ghc6-prof, ghc6-doc а также cabal-install из пакетов распределения. Я не использую распределение cabal-install для чего -то большего, чем начать новую ~/.cabalАнкет Все остальное я устанавливаю с cabal install, в том числе новое cabal сам.

Когда я хочу использовать более новый GHC, я развернут его в /usr/local/stow/ghcVERSION, и включить это с GNU stow (Это добавляет символики в /usr/local который, опять же, имеет приоритет в моем PATH) Когда я хочу вернуться к GHC дистрибуции, я только что запускаю stow -D Чтобы удалить все символические ссылки на это.

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

На самом деле я вообще не использую платформу Haskell, потому что мне не нужно все это, и мне проще установить отдельные библиотеки. Я не устанавливаю библиотеки распределения, потому что не все из них доступны или являются именно те версии, которые мне нужны; и гораздо проще контролировать конфликты, если все они установлены в одном и том же месте (~/.cabal в моем случае). Я ничего не устанавливаю с --global, потому что я думаю, что это неправильно и сложно отказаться.

Конечно, эта информация становится устаревшей, но да, Debian Нестабильно и тестирование имеют на момент написания, Cabal-Install 0.10.2.

Как правило, упаковка Debian из Haskell Stuff предназначена для пользователей, которым хотят набор пакетов, которые, как известно, работают вместе, то есть без зависимости, ада, за счет не всегда иметь последних и лучших. Это включает в себя установку CABAL. Я использую Cabal-Install из репозиториев и только для установки тех библиотек, которые еще не были упакованы для Debian.

Отказ от ответственности: я один из парней, которые создают эти пакеты для Debian.

На Ubuntu я также склонен устанавливать GHC через Stow, вообще игнорируя пакеты систем.

Один небольшой поворот от подхода Jetxee заключается в том, что я устанавливаю платформу Haskell (из источника), объединяя ее с помощью каталога GHC Stow. Я полагаю, я должен назвать пути /usr/local/stow/haskell-platform-VERSION, но я склонен использовать /usr/local/stow/ghc-VERSION вместо.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top