#compilation #erlang #elixir #elixir-mix
#Сборник #erlang #эликсир #elixir-mix
Вопрос:
После перехода с brew на инструмент управления версиями asdf для Elixir и Erlang я все еще не могу скомпилировать свои старые проекты: в процессе компиляции он пытается ссылаться на несуществующие файлы библиотеки Brew’s Cellar lib:
MacBook-Pro% mix test
==> gettext
Compiling 1 file (.erl)
/usr/local/Cellar/erlang/21.3.2/lib/erlang/lib/parsetools-2.1.8/include/yeccpre.hrl:59: illegal pattern
/usr/local/Cellar/erlang/21.3.2/lib/erlang/lib/parsetools-2.1.8/include/yeccpre.hrl:60: variable 'Error' is unbound
/usr/local/Cellar/erlang/21.3.2/lib/erlang/lib/parsetools-2.1.8/include/yeccpre.hrl:60: variable 'Stacktrace' is unbound
/usr/local/Cellar/erlang/21.3.2/lib/erlang/lib/parsetools-2.1.8/include/yeccpre.hrl:63: variable 'Stacktrace' unsafe in 'try' (line 60)
/usr/local/Cellar/erlang/21.3.2/lib/erlang/lib/parsetools-2.1.8/include/yeccpre.hrl:64: variable 'Error' unsafe in 'try' (line 60)
/usr/local/Cellar/erlang/21.3.2/lib/erlang/lib/parsetools-2.1.8/include/yeccpre.hrl:64: variable 'Stacktrace' unsafe in 'try' (line 60)
could not compile dependency :gettext, "mix compile" failed. You can recompile this dependency with "mix deps.compile gettext", update it with "mix deps.update gettext" or clean it with "mix deps.clean gettext"
даже если нет какой-либо /usr/local/Cellar/erlang
папки
где mix использует пути к внешним библиотекам erlang и как это изменить, чтобы использовать пакеты asdf?
Ответ №1:
Erlang, а также Elixir используют двоичные файлы и библиотеки из вашей $PATH
переменной среды, как описано здесь: https://elixir-lang.org/install.html#installing-erlang
asdf обычно загружается в конце вашего $PATH
, что означает, что если у вас все еще установлены Erlang и Elixir через brew, он будет загружен первым. Тем не менее, пожалуйста, дважды проверьте, установлена ли какая-либо другая версия Erlang через brew. Вы можете удалить все версии с помощью команды brew uninstall erlang --force
Также установите локальные версии Erlang и Elixir в корневом каталоге вашего проекта с помощью команд:
asdf local erlang 21.3.2
asdf local elixir 1.8.1-otp-21
Измените версии в соответствии с вашей средой.
И, наконец, проверьте, загружает ли asdf правильную версию с помощью команды asdf current
. Он должен отображать что-то вроде:
elixir 1.8.1-otp-21 (set by /path/to/project/.tool-versions)
erlang 21.3.2 (set by /path/to/project/.tool-versions)
В качестве последнего средства проверьте https://asdf-vm.com/#/core-manage-asdf-vm?id=having-issues .
Комментарии:
1. Пожалуйста, добавьте соответствующие части из вашей ссылки здесь.