如何将asdf的版本设置为指定版本?

13

我用asdf安装了一个版本的nodejs,在终端里解释,但是终端只看到了另一个版本:

> 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所认可的全局版本?


你是否使用 asdf 命令行安装了 Node,例如 asdf install nodejs 12.18.3 - rags2riches-prog
不,我使用了 asdf install 命令,并且 .tool-versions 文件中包含了 Node.js 的版本。这会有影响吗? - xxjjnn
可能吧 - 我正在盲目地按照您在OQ中概述的内容进行操作。.tool-versions文件位于该目录中,并将全局默认设置为$HOME/.tool-versions - rags2riches-prog
type -a nodejs 对你返回了什么?听起来你的系统节点优先于由 asdf 管理的所有内容。 asdf 目录需要在 $PATH 中首先出现。 - Stratus3D
它三次说了 nodejs 是 /usr/bin/nodejs。当我执行 echo $PATH 时,我得到 /usr/local/opt/qt@5.5/bin:/home/joe/.asdf/shims:/home/joe/.asdf/bin: 等等,所以 asdf 是第一个。 - xxjjnn
4个回答

10

我在Ubuntu 18.04和Mac 10.15.7上都遇到了这个问题。

使用brew在mac上安装asdf没有成功 - 缺少asdf.sh文档建议使用git进行安装,这种方法是有效的。

文档所述,运行asdf.sh(下面的灰色框)需要放在.zshrc(或等价的配置文件,例如.bash_profile等)文件的底部。它将添加内容到$PATH的开头。

. $HOME/.asdf/asdf.sh

修改完.zshrc文件后,需要运行source .zshrc以便终端重新加载更改。这应该会导致更改您的$PATH,因此当您运行echo $PATH时,应该看到以以下内容开头的内容:

自然地,在修改之后你需要运行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 的 shims 位于您的路径开头,使得 asdf 指定的版本成为系统所使用的版本。


3
如果您想使用Homebrew和Zsh安装asdf,请使用以下命令: echo -e "\n. $(brew --prefix asdf)/libexec/asdf.sh" >> ${ZDOTDIR:-~}/.zshrc 这将正确地将asdf.sh添加到.zshrc文件中。 在此处阅读更多信息

1

我遇到了同样的问题,我注意到这似乎是因为 asdf 不知道我今天通过 asdf 安装的 Ruby 版本(2.6.3)。它建议我使用我之前三个版本中的一个:

james@James-Precision-5520:~/Git/elixirschool$ asdf current 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@James-Precision-5520:~/Git/elixirschool$ jekyll asdf:命令 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 list ruby 2.3.7 2.4.3 2.5.1 2.6.3 当我将我的 .tool-versions 更改为指向另外三个(较旧的)Ruby 安装之一时,它开始工作。


0
如果你已经在你的zshrc文件中引入了asdf,那么可以通过运行以下命令来解决这个问题:
asdf install TOOLCHAIN VERSION

然后再次运行全局命令:
asdf global TOOLCHAIN VERSION

似乎我之前要么没有运行安装程序,要么以某种方式被更新的asdf或其他原因移除了。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接