Как получить версию asdf в качестве версии

#asdf-vm

#asdf-vm

Вопрос:

Как объясняется в terminal, я установил версию nodejs с использованием asdf, но терминал видит только другую версию:

 > asdf list
nodejs
  12.18.3

> nodejs --version
v8.10.0

> asdf global nodejs 12.18.3 

> nodejs --version          
v8.10.0
  

Добавили следующее в начало файла .zshrc

 . $HOME/.asdf/asdf.sh
export PATH=$HOME/.asdf/asdf.sh:$PATH
  

Перезагрузили .zshrc

 > source ~/.zshrc
  

Нет локальных файлов, для которых установлена локальная версия 8.10.0.

Как мне получить nodejs --version версию, которую asdf признает глобальной версией?

Комментарии:

1. вы устанавливали узел, используя интерфейс командной строки asdf, как в asdf install nodejs 12.18.3 ?

2. Нет, я использовал asdf install , и в .tool-versions файле есть версия nodejs. Имеет ли это значение?

3. Это может быть и так — я слепо придерживаюсь того, что вы изложили в OQ. И .tool-versions файл находится в этом каталоге с глобальными значениями по умолчанию, установленными как $HOME/.tool-versions ?

4. Что type -a nodejs возвращается для вас? Похоже, у вас есть системный узел, имеющий приоритет над всем, что управляется asdf. Каталоги asdf должны быть первыми в вашем $PATH .

5. он говорит nodejs is /usr/bin/nodejs три раза. Когда я это делаю echo $PATH , я получаю /usr/local/opt/qt@5.5/bin:/home/joe/.asdf/shims:/home/joe/.asdf/bin: etc, поэтому asdf является первым

Ответ №1:

У меня была эта проблема как на Ubuntu 18.04, так и на Mac 10.15.7. Было несколько проблем.

Установка asdf с помощью brew (mac) не устанавливает его должным образом — asdf.sh отсутствует. В документах предлагается установить с помощью git, который работает.

Как указано в документах, запуск asdf.sh (серое поле ниже) должен быть ВНИЗУ .zshrc (или эквивалентного файла настроек профиля, такого как .bash_profile и т. Д.). Это добавляет вещи в начало $PATH .

 . $HOME/.asdf/asdf.sh
  

Естественно, вам нужно запустить source .zshrc после ее изменения, чтобы терминал перезагрузил изменения. Это должно привести к изменению вашего $PATH, поэтому при запуске echo $PATH у вас должно быть что-то, начинающееся с:

 /Users/homersimpson/.asdf/shims:/Users/homersimpson/.asdf/bin:/usr/local/opt/qt@5.5/bin: ...other things separated by ':'
  

which node должно дать что-то вроде /Users/homersimpson/.asdf/shims/node . Это прокладки для asdf, находящиеся в начале вашего пути, которые делают версию asdf версией, используемой вашей системой.

Ответ №2:

Если вы хотите установить asdf с помощью homebrew и zsh, используйте это:

echo -e "n. $(brew --prefix asdf)/libexec/asdf.sh" >> ${ZDOTDIR:-~}/.zshrc

Это добавляет asdf.sh правильно в файл .zshrc.

Читайте об этом здесь

Ответ №3:

У меня такая же проблема, и я заметил, что, похоже, это происходит потому, что asdf, похоже, не знает о версии Ruby (2.6.3), которую я установил через asdf сегодня. Он рекомендует мне использовать одну из трех моих предыдущих версий Ruby:

джеймс@Джеймс-Точность-5520:~/Git/elixirschool $ asdf текущий elixir 1.9.0-otp-22 (установлен /home/james/.tool-versions) erlang 22.0.7 (установлен /home/james/.tool-versions) ruby 2.6.3 (установлен /home/james/.tool-versions) джеймс@James-Precision-5520:~/Git/elixirschool$ jekyll asdf: для command jekyll не установлена версия. возможно, вы захотите добавить одну из следующих версий в свой файл .tool-versions:

ruby 2.3.7 ruby 2.4.3 ruby 2.5.1 james@James-Precision-5520:~/Git/elixirschool $ ls ~/.asdf/installs/ruby 2.3.7 2.4.3 2.5.1 2.6.3 james@James-Precision-5520:~/Git/elixirschool $ список asdf ruby 2.3.7 2.4.3 2.5.1 2.6.3 Когда я изменил свой .tool-версии, указывающие на одну из трех других (более старых) установок Ruby, начали работать.