问题描述
在终端中解释,我已经使用asdf安装了一个nodejs版本,但是终端只能看到其他版本:
LOG: invalid length of startup packet
> 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
没有将本地版本设置为8.10.0的本地文件。
我如何获得> source ~/.zshrc
给我以asdf认可为全球版本的版本?
解决方法
我在Ubuntu 18.04和Mac 10.15.7上都遇到了这个问题。 有几个问题。
用brew(mac)安装asdf不能正确安装-缺少asdf.sh
。 The docs建议使用git进行安装,该方法可以正常工作。
如the docs中所述,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的版本成为系统使用的版本。
我遇到了同样的问题,我注意到这似乎是因为 asdf 似乎不知道我今天通过 asdf 安装的 Ruby (2.6.3) 版本。它建议我使用我以前的三个 Ruby 版本之一:
james@James-Precision-5520:~/Git/elixirschool$ asdf current 长生不老药 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 文件中添加以下内容之一:
红宝石 2.3.7 红宝石 2.4.3 红宝石 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 安装之一时,它开始工作。