Ошибки выбрасывания стека при попытке установить что-либо
Всякий раз, когда я пытаюсь установить что-то с 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 есть два основных способа первоначальной установки стека:
Если в вашем дистрибутиве есть пакет "stack", вы можете установить его. Это обычно ставит
stack
двоичный в/usr/bin/stack
,Если вы будете следовать инструкциям на
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.)