Cabal другой версии в песочнице

38 views
Skip to first unread message

Arthur Welf

unread,
Mar 15, 2015, 1:26:27 AM3/15/15
to haskell...@googlegroups.com
Пакет ghc-mod не работает с версией Cabal > 1.20.06. У меня же глобально установлена версия Cabal 1.22.1.1 (cabal-install version 1.22.0.1). Пакет ghc-mod мне нужен для настройки Emacs под Haskell.

Для того, чтобы устранить эту проблему, я решил использовать песочницу для установки пакетов, которые мне нужны для Emacs, прописав для этого в настройках путей в Emacs путь к песочнице, а не к глобальному ~./cabal/bin. Ну и вообще, как начинающий хаскеллер и имаксер, я активно экспериментирую с модулями, поэтому использовать для этого песочницу вместо регулярного сноса глобального Cabal, мне показалось разумным решением.

1. Я создал новую директорию и создал в ней песочницу:

mkdir ~/.cabal-emacs
cd ~/.cabal-emacs
cabal sandbox init

2. Затем я установил туда Cabal версии 1.20.0.6. При установке мне вывело сообщение, что установка произойдет в песочницу.  

cabal install cabal-install-1.20.0.6

3. Но когда после установки я хочу узнать версию cabal, используемую в данной песочнице, мне выдается версия Cabal и cabal-install, установленные глобально:

cabal --v
> cabal-install version 1.22.0.1
> using version 1.22.1.1 of the Cabal library

В связи с этим вопросы:

1. Песочница будет использовать установленную в нее версию Cabal или же установленную глобально?

2. Если установленную глобально, то как сделать, чтобы использовала все-таки другую версию?

2. Если установленную в песочницу, то как узнать версию Cabal, которая используется в данной песочнице?

--
Best regards,
Arthur Welf

Maxim Kulkin

unread,
Mar 15, 2015, 2:38:39 AM3/15/15
to haskell...@googlegroups.com
Все очень просто: вызывается тот cabal, который у Вас в путях раньше (скорее всего, Вы ничего дополнительного после настройки песочницы не прописывали и используется глобальный). Или для нужной вам shell сессии пропишите пути до кабала из песочницы (<sandbox_dir>/bin), или зовите с явным путем.

Артур Вельф

unread,
Mar 15, 2015, 2:54:31 AM3/15/15
to haskell...@googlegroups.com
Спасибо. А если я пропишу адрес песочницы в PATH, не будет ли
вызываться Cabal из песочницы и в глобальном режиме? Можно ли этот
путь прописать где-нибудь в cabal.sandbox.config, чтобы эта версия
Cabal использовалась только в этой песочнице?

Sent from iPad

> 15 марта 2015, в 09:38, Maxim Kulkin <maxim....@gmail.com> написал(а):
> --
> Вы получили это сообщение, поскольку подписаны на группу Русский Haskell.
>
> Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес haskell-russi...@googlegroups.com.
> Чтобы добавлять сообщения в эту группу, отправьте письмо по адресу haskell...@googlegroups.com.
> Просмотреть это обсуждение в Сети можно по адресу https://groups.google.com/d/msgid/haskell-russian/B316BD69-9D0D-4698-8C6F-8CC316342705%40gmail.com.
> Настройки подписки и доставки писем: https://groups.google.com/d/optout.

Maxim Kulkin

unread,
Mar 15, 2015, 2:57:39 AM3/15/15
to haskell...@googlegroups.com
OMG.. Ну, если так хочется, напишите скрипт, который будет искать песочницу в папках верхнего уровня (включая текущую) и запускать cabal оттуда, если он там есть, иначе - глобальный.. потом положите этот скрипт в какую-нть директорию (я обычно кладу в $HOME/bin) и сделайте так, чтобы эта директория была как можно раньше в путях.
> Просмотреть это обсуждение в Сети можно по адресу https://groups.google.com/d/msgid/haskell-russian/-4688142548327500016%40unknownmsgid.

Arthur Welf

unread,
Mar 15, 2015, 5:18:41 AM3/15/15
to haskell...@googlegroups.com
Спасибо за совет. Я решил проблему другим способом. Поскольку команда cabal sandbox init всегда создает в папку директорию .cabal-sandbox, то в ~/.bash_profile я прописал строчку:

export PATH="./.cabal-sandbox/bin:$PATH"

Таким образом, если я ввожу команды, находясь в корневой директории, в которой создана песочница, то используется локальный путь к песочнице. Если же песочницы в этой директории нет, то используются глобальные пути.
> Просмотреть это обсуждение в Сети можно по адресу https://groups.google.com/d/msgid/haskell-russian/CCAA8BA2-B313-4B17-BE70-A53378110628%40gmail.com.

> Настройки подписки и доставки писем: https://groups.google.com/d/optout.
>

--
Best regards,
Arthur Welf

Reply all
Reply to author
Forward
0 new messages