Ошибки выбрасывания стека при попытке установить что-либо

Всякий раз, когда я пытаюсь установить что-то с stack, например $ stack install hip, $ stack install Gifcurryи несколько других пакетов, все они выдают одну и ту же ошибку:

Downloaded lts-12.9 build plan.
AesonException "Error in $.packages.cassava.constraints.flags['bytestring--lt-0_10_4']: Invalid flag name: \"bytestring--lt-0_10_4\""

Это первый раз, когда я пытался использовать stack установить что-нибудь, так что я не уверен, что делать. Я бегал $ stack upgrade перед этим

Версия стека 1.5.1 x86_64 и это в каталоге usr/bin/stack,

1 ответ

Решение

Я думаю, что это обычная проблема, но немного сложно найти ответ Stackru, который напрямую к нему обращается, так что вот пример.

В Linux есть два основных способа первоначальной установки стека:

  1. Если в вашем дистрибутиве есть пакет "stack", вы можете установить его. Это обычно ставит stack двоичный в /usr/bin/stack,

  2. Если вы будете следовать инструкциям на haskellstack.org, он скажет вам получить сценарий установки через curl и пропусти через оболочку: curl -sSL https://get.haskellstack.org/ | sh, По умолчанию это ставит stack в /usr/local/bin/stack,

Большинство людей уже имеют эти каталоги в своих путях, поэтому у них нет проблем с запуском stack после установки в любом случае.

ОДНАКО, если позже вы будете следовать инструкциям по обновлению стека с помощью stack upgrade команда, это установит обновленный бинарный файл в ваш домашний каталог ~/.local/bin/stack, Старая версия в /usr/bin/stack или же /usr/local/bin/stack останется нетронутым

Так как многие люди не имеют ~/.local/bin/ на своем пути они могут обнаружить, что попытки запустить Stack после его предположительного обновления все равно будут запускать старую версию. Если вы запускаете:

$ which stack
/usr/local/bin/stack

и увидите, что путь - это глобально установленная версия, а не что-то в вашем домашнем каталоге, например /home/xxx/.local/bin/stackтогда вы, вероятно, все еще используете старую версию.

Если вы попытаетесь запустить:

$ ~/.local/bin/stack install hip

и это работает, тогда это подтвердит, что это ваша проблема. Вам придется добавить $HOME/.local/bin на ваш путь перед глобальными путями, чтобы выбрать правильную версию stack, (Если вы еще этого не делали, найдите "добавление пути к каталогу" и ваш дистрибутив Linux. Например, вот несколько инструкций для Ubuntu на сайте Ask Ubuntu StackExchange.)

Другие вопросы по тегам