Я думаю, что это распространенная проблема, но немного сложно найти ответ StackOverflow, который напрямую обращается к нему, поэтому вот пример.
В Linux есть два основных способа начальной установкиСтек:
Если в вашем дистрибутиве есть пакет «стек», вы можете установить его.Это обычно помещает двоичный файл stack
в /usr/bin/stack
.
Если вы будете следовать инструкциям на 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.)