Подтвердить что ты не робот

Могу ли я обновить свою инсталляцию?

Я только что установил 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.

4b9b3361

Ответ 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.