Ошибки выбрасывания стека при попытке установить что-либо - PullRequest
0 голосов
/ 15 сентября 2018

Всякий раз, когда я пытаюсь установить что-либо с 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 Ответ

0 голосов
/ 15 сентября 2018

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

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

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

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

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

HOWEVER , если позднее вы будете следовать инструкциям по обновлению стека с помощью команды 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.)

...