英文:
brew installation of elasticsearch failing
问题
尝试使用brew安装ElasticSearch,但是所有尝试都失败了,出现错误:
错误:子进程内部发生异常:
NoMethodError:未定义方法`path' for nil:NilClass
你是不是想说?paths
有人遇到过类似的情况吗?
brew安装的--debug输出如下:
➜ ~ brew install --debug elasticsearch
更新Homebrew...
/usr/local/Homebrew/Library/Homebrew/brew.rb (Formulary::FormulaLoader):加载 /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/Formula/elasticsearch.rb
/Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Home/bin/java -version
/Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Home/bin/java -version
/usr/local/Homebrew/Library/Homebrew/build.rb (Formulary::FromPathLoader):加载 /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/Formula/elasticsearch.rb
错误:子进程内部发生异常:
NoMethodError:未定义方法`path' for nil:NilClass
你是不是想说?paths
/usr/local/Homebrew/Library/Homebrew/extend/os/mac/extend/ENV/super.rb:112:在`setup_build_environment'中
/usr/local/Homebrew/Library/Homebrew/build.rb:88:在`install'中
/usr/local/Homebrew/Library/Homebrew/build.rb:196:在`<main>'中
谢谢!
英文:
Been trying to install ElasticSearch using brew, however, all my attempts fail and error
Error: An exception occurred within a child process:
NoMethodError: undefined method `path' for nil:NilClass
Did you mean? paths
is fired back at me. anyone ever crossed this?
brew install --debug output is:
➜ ~ brew install --debug elasticsearch
Updating Homebrew...
/usr/local/Homebrew/Library/Homebrew/brew.rb (Formulary::FormulaLoader): loading /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/Formula/elasticsearch.rb
/Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Home/bin/java -version
/Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Home/bin/java -version
/usr/local/Homebrew/Library/Homebrew/build.rb (Formulary::FromPathLoader): loading /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/Formula/elasticsearch.rb
Error: An exception occurred within a child process:
NoMethodError: undefined method `path' for nil:NilClass
Did you mean? paths
/usr/local/Homebrew/Library/Homebrew/extend/os/mac/extend/ENV/super.rb:112:in `setup_build_environment'
/usr/local/Homebrew/Library/Homebrew/build.rb:88:in `install'
/usr/local/Homebrew/Library/Homebrew/build.rb:196:in `<main>'
thanks!
答案1
得分: 6
最终,问题是因为Xcode版本过旧。更新Xcode解决了这个问题。
英文:
Eventually it was due to the fact xcode was outdated. Updating xcode fixed the problem.
答案2
得分: 1
以下是翻译好的内容:
在 Elastic 网站上针对 使用 Homebrew 在 macOS 上安装 Elasticsearch 的说明建议使用不同的公式,即:
brew tap elastic/tap
然后
brew install elastic/tap/elasticsearch-full
或者
brew install elastic/tap/elasticsearch-oss
这取决于您是想要非免费(但仍为 $0.00)版本还是 OSS 版本。
我自己实际上还没有尝试过这个公式,但我刚刚在 macOS Catalina 上使用 brew install openjdk@11
成功获取了所需的 Java 版本,然后通过手动安装 logstash-7.6.2 的 tar 文件来安装,确保在运行 logstash 程序之前执行了 export JAVA_HOME=/usr/local/opt/openjdk@11
;我认为相同的方法可能适用于 elasticsearch,尽管上面的官方公式可能更简单。
英文:
The instructions for Installing Elasticsearch on macOS with Homebrew on the elastic website suggest using a different formula, namely:
brew tap elastic/tap
then
brew install elastic/tap/elasticsearch-full
or
brew install elastic/tap/elasticsearch-oss
depending on whether you want the non-Free (but still $0.00) or OSS version.
I haven't actually tried that formula myself, but I have just had success on macOS Catalina with brew install openjdk@11
to get the required Java version, then I installed the tarfile of logstash-7.6.2 by hand, making sure to do export JAVA_HOME=/usr/local/opt/openjdk@11
before running the logstash program; I assume the same approach will work with elasticsearch, although the official formula above is probably simpler.
答案3
得分: 0
以下是一个临时解决方案,直到 Homebrew 被修复:
-
通过以下方式禁用 Homebrew 的自动更新:要么像这样在你的 brew 命令前加上前缀:
HOMEBREW_NO_AUTO_UPDATE=1 brew install elasticsearch
,要么在你的 Bash .profile 文件中设置一个环境变量,如export HOMEBREW_NO_AUTO_UPDATE=1
(我使用的是后者)。 -
如果你将 Homebrew 安装为一个位于 /usr/local/Homebrew 的 GIT 仓库,在那个目录下查看 GIT 日志。你应该会看到最近对
stable
分支进行了合并,引入了新的代码到 super.rb 文件:2ae2680 (tag: 2.2.12, stable) Merge pull request #7301 from Bo98/cmake-sdkroot
-
你想在 /usr/local/Homebrew git 仓库中检出一个之前的提交。这对我来说行之有效:
<strike>/usr/local/Homebrew> git checkout stable^</strike><br/>
<strike>HEAD is now at 6e3a293... Merge pull request #7300 from bayandin/patch-1</strike>> 更正!"stable" 分支最近移动到了
2.2.13
。提交历史仍然包含有问题的提交:2ae2680 (tag: 2.2.12) Merge pull request #7301 from Bo98/cmake-sdkroot
。取代标签之前的提交进行检出。
/usr/local/Homebrew> git checkout -q 2.2.12^
/usr/local/Homebrew> git branch -vv --no-color
* (HEAD detached at 6e3a293) 6e3a293 Merge pull request #7300 from bayandin/patch-1
master c9ffde6 [origin/master] Merge pull request #7351 from Bo98/branch-encode
stable 3d9cf83 Merge pull request #7346 from Bo98/pr-pull
- 当你准备撤销步骤 #3 中的更改时,运行
brew update
将会检出stable
分支(处于无论何种状态)。
英文:
The following is a temporary work-around until Homebrew is fixed.
-
Disable the Homebrew auto-update by either prefixing your brew commands like this:
HOMEBREW_NO_AUTO_UPDATE=1 brew install elasticsearch
or setting an environment variable in your Bash .profile asexport HOMEBREW_NO_AUTO_UPDATE=1
. (I am using the latter.) -
If you have Homebrew installed as a GIT repository under /usr/local/Homebrew, go to that directory to review the GIT log. You should see a recent merge to the
stable
branch introduced new code to super.rb:
>2ae2680 (tag: 2.2.12, stable) Merge pull request #7301 from Bo98/cmake-sdkroot
-
You want to checkout a previous commit in your /usr/local/Homebrew git repo. This did the trick for me:
<strike>/usr/local/Homebrew> git checkout stable^</strike><br/>
<strike>HEAD is now at 6e3a293... Merge pull request #7300 from bayandin/patch-1</strike>
> CORRECTION! The "stable" branch moved recently to 2.2.13
. The commit history still contains the problem commit: 2ae2680 (tag: 2.2.12) Merge pull request #7301 from Bo98/cmake-sdkroot
.
Checkout the commit-before-the-tag instead.
/usr/local/Homebrew> git checkout -q 2.2.12^
/usr/local/Homebrew> git branch -vv --no-color
* (HEAD detached at 6e3a293) 6e3a293 Merge pull request #7300 from bayandin/patch-1
master c9ffde6 [origin/master] Merge pull request #7351 from Bo98/branch-encode
stable 3d9cf83 Merge pull request #7346 from Bo98/pr-pull
- When you are ready to undo the changes in step #3, running
brew update
will checkout thestable
branch (at whatever state that will be).
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论