2013-02-17 1 views
30

Я только что установил Haskell от it's official site. После этого следуйте инструкциям по быстрому запуску.Могу ли я модернизировать свою установку для установки?

Я бегу:

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 

Так что же, я обновить кабала установить или нет? Как проверить версию моего кэбала?

Важно: Я использую версию 64 бит для Mac OS X.

+3

Используйте 'which cabal', чтобы узнать, какая установка cabal вы используете, cabal, вероятно, не устанавливает новую версию в вашу PATH. Проверьте ~/bin на другой исполняемый файл cabal. – bisserlis

ответ

18

У меня была аналогичная проблема после установки платформы 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

Аналогичная ситуация произошла в моей системе Windows. Каталоги установки для каждого пользователя будут находиться в '% HOMEPATH% \ AppData \ Roaming \ cabal \ bin', поэтому это должно быть добавлено к пути как более высокий приоритет. –

3

cabal --version дает версию междусобойчик вы работаете. Если вы хотите увидеть версию cabal-install, у вас есть, запустите cabal info cabal-install и посмотрите на установленные версии .

Для меня на OS X, версии установлены является [unknown], после запуска cabal install cabal-install, который не является большим.

+0

Может быть, потому, что он укоренился, он всегда говорит вам о модернизации? –

+1

@LuisOrtegaAraneda Нет, двоичный код cabal знает свою версию, он только сообщает вам обновить, если есть новый способ взлома. Вероятно, новый был установлен в каталог, который не находится на вашем пути. Какая ОС? В Linux (и OS X, iirc) вы должны добавить '$ HOME/.cabal/bin' к вашему пути; в Windows, что-то вроде 'Users \ You \ AppData \ Roaming'. –

+0

На самом деле, это не работает с этим путем, в OS X вы должны использовать '/ Library/Haskell /'. И, когда я делаю cabal info cabal-install, он говорит '[unknown]' –

3

я тоже была эта проблема.

После запуска which cabal, я обнаружил, что он использовал /usr/bin/cabal. Это устранило проблему.

10

На OS X 10.8 Мне пришлось добавить /Library/Haskell/bin в мой PATH (положить его до /usr/bin). Добавление исправленного сообщения об ошибке

+1

Это правильно. Старая версия в '/ usr/bin' затеняла версию в'/Library/Haskell/bin'. Довольно грязная установка, я бы сказал ... Почему бы просто не заменить старую версию в '/ usr/bin'. –

12

Здесь, похоже, возникает несколько другая проблема. В моем случае 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" 
+0

Это путь, ИМО. –

+0

Ты спас мой день. – Wilbeibi

26

В моем случае заговорщики первоначально установлен в /usr/local/bin на самогон при установке haskell-platform. При обновлении cabal версия установлена ​​на $HOME/.cabal/bin/cabal. Вы должны разместить Кабалы Лари выше в вашем $PATH, например, так:

export PATH=$HOME/.cabal/bin:$PATH 
+0

Это не сработало для меня на доморощенных + mavericks. [Это] (http://stackoverflow.com/a/19736802/388010) ответ сделал, однако. –

+0

@Sebastian - Right - ЕСЛИ вы используете пакет непосредственно из http://hackage.haskell.org/platform/. Homebrew использует '$ HOME/.cabal' и'/usr/local/bin', в отличие от '/ Library/Haskell/bin'. Теперь я понимаю, что решение выше отвечает на несколько иной вопрос, чем тот, который задал ОП. – Charles

+0

Для меня это было проблемой. –

1

кажется, что заговорщики по умолчанию устанавливают пакеты локально для текущего пользователя и, следовательно, не будет частью PATH. Посмотрите на Cabal documentation, в частности, на шаг 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.

0

В моем случае новая версия заговорщиков была быть установлена ​​в .cabal-песочнице проекта я был.

например Проверка версии:

./.cabal-sandbox/bin/cabal --version 

Так что мне нужно было обновить его за пределами этого. Это было на OSX.

1

В моем случае для решения этой проблемы потребовалось сочетание нескольких ответов. Я попытаюсь предоставить более полное решение в одном ответе для кого-либо еще в моей ситуации.

  • Для начала работы 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, как предложили другие.