cabal-install и Debian - PullRequest
       163

cabal-install и Debian

13 голосов
/ 21 марта 2011

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

Проблема заключается в установке 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 cabalsи тот, который я получаю, набрав 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, поэтому, если сценарии используют эту команду, они будут одурачены ...)
  • Кто-то придумал лучшее решение?(У меня что-то особенное, но это все, что я мог придумать, с моим плохим знанием того, что происходит за кулисами ...)
  • Пожалуйста, исправьте меня, если что-то, что я говорю выше, является неправильным или неточным.

Ответы [ 4 ]

13 голосов
/ 21 марта 2011

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

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

11 голосов
/ 21 марта 2011

Я держу свой локальный пользователь $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, потому что я думаю, что это неправильно и трудно откатиться.

4 голосов
/ 22 сентября 2011

Конечно, эта информация устарела, но да, Debian нестабильный и тестируемый, на момент написания, cabal-install 0.10.2.

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

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

1 голос
/ 22 марта 2011

В Ubuntu я также склонен устанавливать GHC через stow, игнорируя системные пакеты в целом.

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

...