问题描述
操作系统:macOS Catalina (10.15.7
)
外壳:zsh
asdf:v.0.8.0
在我的.zshrc
中:
export JDK_HOME=/Users/Ctreptow/.asdf/shims
export JAVA_HOME=${JDK_HOME}
export PATH=$PATH:${JAVA_HOME}
. $(brew --prefix asdf)/asdf.sh
提示:
work/proj(master)> which java
/Users/Ctreptow/.asdf/shims/java
work/proj(master)> which ruby
/Users/Ctreptow/.asdf/shims/ruby
work/proj(master)> which jruby
jruby not found
work/proj(master)> which gem
/Users/Ctreptow/.asdf/shims/gem
work/proj(master)> which bundle
/Users/Ctreptow/.asdf/shims/bundle
当我今天尝试在 rbenv
项目中安装 gem 时,我意识到我配置了 asdf
和 jruby
。我决定改用asdf
。我相信我已经删除了 rbenv
,但可能我遗漏了一些挥之不去的东西。
我也做了一个brew uninstall ruby-build
。
在 jruby
项目中,我们的 Gemfile
指定:
ruby "2.5.7",engine: "jruby",engine_version: "9.2.13.0"
尝试安装 jruby
会产生:
work/proj(master)> asdf install ruby jruby-9.2.13.0
Downloading jruby-bin-9.2.13.0.tar.gz...
-> https://dqw8nmjcqpjn7.cloudfront.net/73a8c241a162e644c87e864c3485c55adedeb82a6fd80fa3cb538fdacda7af58
Installing jruby-9.2.13.0...
BUILD Failed (Mac OS X 10.15.7 using ruby-build 20201005)
Inspect or clean up the working tree at /var/folders/w2/m3v3Grd53s191ys4wjc1tcnr0000gn/T/ruby-build.20201228141357.27332.TjSdh4
Results logged to /var/folders/w2/m3v3Grd53s191ys4wjc1tcnr0000gn/T/ruby-build.20201228141357.27332.log
Last 10 log lines:
Date: Mon,28 Dec 2020 17:11:23 GMT
ETag: "99df4eb89f88c7582bfe7c313daec7b4"
X-Cache: Hit from cloudfront
Via: 1.1 2cd732b3fedea7af49f60c3497dbaec3.cloudfront.net (CloudFront)
X-Amz-Cf-Pop: ORD53-C3
X-Amz-Cf-Id: JksAVdI9wNtkTLb7k--bwYLHNrmbbhtI6FMFDQBm4h_OJi31nPbaLg==
Age: 10954
/var/folders/w2/m3v3Grd53s191ys4wjc1tcnr0000gn/T/ruby-build.20201228141357.27332.TjSdh4/jruby-9.2.13.0 /var/folders/w2/m3v3Grd53s191ys4wjc1tcnr0000gn/T/ruby-build.20201228141357.27332.TjSdh4 ~/code/work/proj
./ruby: line 446: /Users/Ctreptow/.asdf/shims/bin/java: No such file or directory
我怀疑错误来自于某种 rbenv
剩余部分,但我不确定是什么,因为我已经删除了 ~/.rbenv
目录,并且还做了 brew uninstall rbenv
作为我的 rbenv
中的清理 zshrc
。
错误指定了 /Users/Ctreptow/.asdf/shims/bin/java
,暗示了一个名为 bin
的预期目录,但我的 shims
目录没有任何子目录。我也怀疑这是 rbenv
做事的方式遗留下来的。
如何让asdf
安装jruby
?
更新:
我通过在 bin
中创建 ~/.asdf/shims/java
并将 java
符号链接到 bin/java
来解决这个问题:
ls -ltr ~/.asdf/shims/bin
==> java -> ../java
现在,当我尝试安装时,它已经过去了,我面临着新的错误:
ERROR: SSL verification error at depth 1: unable to get local issuer certificate (20)
ERROR: You must add /OU=GlobalSign Root CA - R3/O=GlobalSign/CN=GlobalSign to your local trusted store
ERROR: SSL verification error at depth 1: unable to get local issuer certificate (20)
ERROR: You must add /OU=GlobalSign Root CA - R3/O=GlobalSign/CN=GlobalSign to your local trusted store
ERROR: SSL verification error at depth 1: unable to get local issuer certificate (20)
ERROR: You must add /OU=GlobalSign Root CA - R3/O=GlobalSign/CN=GlobalSign to your local trusted store
ERROR: Could not find a valid gem 'jruby-launcher' (>= 0),here is why:
Unable to download data from https://rubygems.org/ - certificate verify Failed (https://rubygems.org/specs.4.8.gz)
ERROR: SSL verification error at depth 1: unable to get local issuer certificate (20)
ERROR: You must add /OU=GlobalSign Root CA - R3/O=GlobalSign/CN=GlobalSign to your local trusted store
ERROR: SSL verification error at depth 1: unable to get local issuer certificate (20)
ERROR: You must add /OU=GlobalSign Root CA - R3/O=GlobalSign/CN=GlobalSign to your local trusted store
解决方法
我通过首先安装 java
版本解决了这个问题:
asdf install java adoptopenjdk-8.0.275+1
然后通过执行以下操作确保为该项目正确设置:
asdf local java adoptopenjdk-8.0.275+1
这样做之后,我可以毫无问题地安装我需要的 jruby
版本。
即使您找到了解决问题的方法,当您提出问题时,我仍会尽力解释问题所在。
您最初的问题在于您的 JDK_HOME
、JAVA_HOME
和 PATH
:
export JDK_HOME=/Users/Ctreptow/.asdf/shims
export JAVA_HOME=${JDK_HOME}
export PATH=$PATH:${JAVA_HOME}
您没有使用 ASDF java 插件来管理您的 JAVA_HOME
,并且您的 PATH
应该已经由 ASDF 正确设置。
您的手动配置导致 jruby 期望 ${JAVA_HOME}/bin/java
,因为 JAVA_HOME 应该看起来像(例如 Java 将如何安装在 macOS 上):
❯ /usr/libexec/java_home
/Library/Java/JavaVirtualMachines/adoptopenjdk-15.0.2+7/Contents/Home
❯ ls /Library/Java/JavaVirtualMachines/adoptopenjdk-15.0.2+7/Contents/Home
bin conf include jmods legal lib man release
您使用哪个 ASDF 插件来管理 Java 版本?它是默认的 https://github.com/halcyon/asdf-java 吗? (您可以使用 asdf plugin list --urls --refs
进行检查)
如果你使用它,你还需要包含 JAVA_HOME 脚本
. $(brew --prefix asdf)/plugins/java/set-java-home.zsh
在 asdf 脚本之后
. $(brew --prefix asdf)/asdf.sh
在您的 .zshrc
如果你使用它,你将有一个正确的 JAVA_HOME,同样在切换你想要的版本之后:
❯ asdf local java adoptopenjdk-8.0.275+1
❯ echo $JAVA_HOME
/Users/wessel/.asdf/installs/java/adoptopenjdk-8.0.275+1
❯ ls /Users/wessel/.asdf/installs/java/adoptopenjdk-8.0.275+1
ASSEMBLY_EXCEPTION bin lib sample
LICENSE include man src.zip
THIRD_PARTY_README jre release
❯ asdf local java zulu-15.29.15
❯ echo $JAVA_HOME
/Users/wessel/.asdf/installs/java/zulu-15.29.15/zulu-15.jdk/Contents/Home
❯ ls /Users/wessel/.asdf/installs/java/zulu-15.29.15/zulu-15.jdk/Contents/Home
DISCLAIMER bin demo jmods lib readme.txt
Welcome.html conf include legal man release