Могу ли я обновить свою инсталляцию?
Я только что установил Haskell с официального сайта. После этого, следуя инструкциям по быстрому запуску.
Я запускаю:
cabal update
Что показывает это сообщение:
Downloading the latest package list from hackage.haskell.org
Note: there is a new version of cabal-install available.
To upgrade, run: cabal install cabal-install
Я запускаю:
cabal install cabal-install
и проверьте, было ли обновление успешным с помощью
cabal update
В результате он показывает мне одно и то же сообщение с самого начала:
Downloading the latest package list from hackage.haskell.org
Note: there is a new version of cabal-install available.
To upgrade, run: cabal install cabal-install
Итак, я обновил установку cabal или нет? Как проверить версию моего кэбля?
Важно: я использую версию 64 бит для Mac OS X.
Ответы
Ответ 1
У меня была аналогичная проблема после установки платформы Haskell 2012.4.0.0
на OSX. Когда я побежал cabal install cabal-install
, он закончился:
cabal: ../ghc-7.4.2/lib/cabal-install-1.16.0.2/bin/cabal: does not exist
Итак, я догадался, что он где-то перепутал свои пути. Однако исполняемый файл был успешно создан (проверьте ~/Library/Haskell/ghc-7.4.2/lib/cabal-install-1.16.0.2/bin/cabal
), и я просто скопировал его оттуда на ~/Library/Haskell/bin
, который находится на моем пути.
После этого все прошло нормально:
$ which cabal
/Users/luke/Library/Haskell/bin/cabal
$ cabal update
Downloading the latest package list from hackage.haskell.org
$ cabal --version
cabal-install version 1.16.0.2
using version 1.16.0.3 of the Cabal library
Ответ 2
В моем случае (и, возможно, другие?) кабль первоначально устанавливается в /usr/local/bin
доморощенным при установке haskell-platform
. При обновлении cabal версия устанавливается на $HOME/.cabal/bin/cabal
. Вы должны поместить свои контейнеры для выталкивания выше в $PATH
, например:
export PATH=$HOME/.cabal/bin:$PATH
Ответ 3
Кажется, что у каждого возникает немного другая проблема. В моем случае cabal
был успешно создан и установлен на ~/Library/Haskell/bin
.
Как отмечено в ~/.cabal/config
, добавление ~/Library/Haskell/bin
в PATH
решило проблему.
Ниже приведено описание в ~/.cabal/config
:
-- === Built executables will be installed in:
-- ~/Library/Haskell/bin
--
-- You may wish to place this on your PATH by adding the following
-- line to your ~/.bash_profile:
-- export PATH="$HOME/Library/Haskell/bin:$PATH"
Ответ 4
В OS X 10.8 мне пришлось добавить /Library/Haskell/bin
в мой PATH (поставить его перед /usr/bin
). Добавление этого исправленного сообщения об ошибке
Ответ 5
cabal --version
дает вам версию cabal, в которой вы работаете. Если вы хотите увидеть версию cabal-install у вас есть, запустите cabal info cabal-install
и посмотрите на версию, установленную в строке.
Для меня в OS X версии установлены [unknown]
, после запуска cabal install cabal-install
, что не очень удобно.
Ответ 6
У меня тоже была эта проблема.
После запуска which cabal
я обнаружил, что он использовал /usr/bin/cabal
. Это устранило проблему.
Ответ 7
Кажется, что cabal по умолчанию устанавливает локальные пакеты для текущего пользователя и поэтому не будет частью PATH. Посмотрите на
Документация по каббалу, в частности, шаг 1.2.1, где вы можете изменить конфигурацию, чтобы установить вещи по всему миру по умолчанию (не рекомендуется).
То, как я установил cabal, было cabal --global install cabal-install
, но все еще имело проблемы с этим путем, поскольку по умолчанию установка Haskell ставит путь в этом порядке C:\Program Files\Haskell Platform\2013.2.0.0\lib\extralibs\bin;C:\Program Files\Haskell Platform\2013.2.0.0\bin;
, где первый путь имеет приоритет над вторым. С помощью -global flag cabal установлено двоичное значение C:\Program Files\Haskell\bin
, которое не находится на моем пути, но должно быть добавлено до пути C:\Program Files\Haskell Platform\2013.2.0.0\lib\extralibs\bin
.
Взято из документации
Вы должны поместить cabal.exe в каталог, который находится на вашем% PATH%, например C:\Program Files\Haskell\bin.
Ответ 8
В моем случае для решения этой проблемы потребовалось сочетание нескольких ответов. Я попытаюсь предоставить более полное решение в одном ответе для кого-либо еще в моей ситуации.
- Для начала запуск
which cabal
показал мне, что загружается /usr/bin/cabal
, который был символической ссылкой на /Library/Haskell/ghc-7.8.3-x86_64/bin/cabal
. Я считаю, что были установлены новые версии cabal, но этот путь был специфичен для одной версии, поэтому они были проигнорированы. Добавление /Library/Haskell/bin
в начало моей $PATH
устраняет эту ситуацию.
- Во-вторых, что еще более важно, новые версии
cabal-install
устанавливались в мою песочницу cabal вместо системы. Я не видел никаких других ответов, предлагающих это, но после небольшого обезглавливания я обнаружил, что перемещение за пределы моего каталога приложений позволило кабале фактически установить в систему.
- Наконец, добавление флага
--global
к команде устраняет проблему. Моя последняя команда была cabal install --global cabal-install
. После этого я наконец смог правильно обновиться.
TL; DR: если вы используете песочницы cabal, перейдите за пределы каталога вашего проекта и запустите cabal install --global cabal-install
. Кроме того, проверьте свою переменную $PATH
, как предложили другие.
Ответ 9
В моем случае новая версия cabal была установлена в .cabal-sandbox проекта, в котором я был.
например. Проверка версии:
./.cabal-sandbox/bin/cabal --version
Поэтому мне нужно было обновить его за пределами этого. Это было на OSX.