You do not have permission to delete messages in this group
Copy link
Report message
Show original message
Either email addresses are anonymous for this group or you need the view member email addresses permission to view the original message
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
Reply to author
Sign in to reply to author
Forward
Sign in to forward
Delete
You do not have permission to delete messages in this group
Copy link
Report message
Show original message
Either email addresses are anonymous for this group or you need the view member email addresses permission to view the original message
to haskell...@googlegroups.com
Все очень просто: вызывается тот cabal, который у Вас в путях раньше (скорее всего, Вы ничего дополнительного после настройки песочницы не прописывали и используется глобальный). Или для нужной вам shell сессии пропишите пути до кабала из песочницы (<sandbox_dir>/bin), или зовите с явным путем.
Артур Вельф
unread,
Mar 15, 2015, 2:54:31 AM3/15/15
Reply to author
Sign in to reply to author
Forward
Sign in to forward
Delete
You do not have permission to delete messages in this group
Copy link
Report message
Show original message
Either email addresses are anonymous for this group or you need the view member email addresses permission to view the original message
to haskell...@googlegroups.com
Спасибо. А если я пропишу адрес песочницы в PATH, не будет ли
вызываться Cabal из песочницы и в глобальном режиме? Можно ли этот
путь прописать где-нибудь в cabal.sandbox.config, чтобы эта версия
Cabal использовалась только в этой песочнице?
You do not have permission to delete messages in this group
Copy link
Report message
Show original message
Either email addresses are anonymous for this group or you need the view member email addresses permission to view the original message
to haskell...@googlegroups.com
OMG.. Ну, если так хочется, напишите скрипт, который будет искать песочницу в папках верхнего уровня (включая текущую) и запускать cabal оттуда, если он там есть, иначе - глобальный.. потом положите этот скрипт в какую-нть директорию (я обычно кладу в $HOME/bin) и сделайте так, чтобы эта директория была как можно раньше в путях.
You do not have permission to delete messages in this group
Copy link
Report message
Show original message
Either email addresses are anonymous for this group or you need the view member email addresses permission to view the original message
to haskell...@googlegroups.com
Спасибо за совет. Я решил проблему другим способом. Поскольку команда cabal sandbox init всегда создает в папку директорию .cabal-sandbox, то в ~/.bash_profile я прописал строчку:
export PATH="./.cabal-sandbox/bin:$PATH"
Таким образом, если я ввожу команды, находясь в корневой директории, в которой создана песочница, то используется локальный путь к песочнице. Если же песочницы в этой директории нет, то используются глобальные пути.