【问题标题】:brew installation of elasticsearch failingbrew安装elasticsearch失败
【发布时间】:2020-07-22 13:28:31
【问题描述】:

一直在尝试使用 brew 安装 ElasticSearch,但是,我的所有尝试都失败并出现错误

    Error: An exception occurred within a child process:
  NoMethodError: undefined method `path' for nil:NilClass
Did you mean?  paths

被我回击了。有人穿过这个吗? brew install --debug 输出为:

➜  ~ 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>'

谢谢!

【问题讨论】:

  • 这个错误不是elasticsearch特有的。尝试在 Mac 上安装 sbt 或 scala 时,我看到了同样的问题。问题是sdksuper.rb 中未定义。追溯到MacOS.sdk_for_formula(formula) 在第 110 行返回 nil。

标签: java ruby-on-rails macos elasticsearch homebrew


【解决方案1】:

最终是因为 xcode 已经过时了。更新 xcode 解决了这个问题。

【讨论】:

  • 感谢大卫的提示。我的 Xcode 升级失败了,因为有几个包太旧以至于它们的签名过期了。为了让 brew 开心,我重命名了这些包,以便 Xcode 忽略它们:/Applications/Xcode.app/Contents/Resources/Packages/MobileDeviceDevelopment.pkg /Applications/Xcode.app/Contents/Resources/Packages/MobileDevice.pkg
【解决方案2】:

弹性网站上Installing Elasticsearch on macOS with Homebrew 的说明建议使用不同的公式,即:

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 的 tarfile,确保在运行 logstash 程序之前执行export JAVA_HOME=/usr/local/opt/openjdk@11;我认为同样的方法也适用于 elasticsearch,尽管上面的官方公式可能更简单。

【讨论】:

  • 这实际上是我的安装方式。但结果还是一样 :(
【解决方案3】:

在 Homebrew 修复之前,以下是临时解决方法。

  1. Disable the Homebrew auto-update 通过像这样为 brew 命令添加前缀:HOMEBREW_NO_AUTO_UPDATE=1 brew install elasticsearch 或在 Bash .profile 中将环境变量设置为 export HOMEBREW_NO_AUTO_UPDATE=1。 (我使用的是后者。)
  2. 如果您将 Homebrew 作为 GIT 存储库安装在 /usr/local/Homebrew 下,请转到该目录查看 GIT 日志。您应该会看到最近合并到 stable 分支为 super.rb 引入了新代码:

    2ae2680 (tag: 2.2.12, stable) Merge pull request #7301 from Bo98/cmake-sdkroot

  3. 您想在 /usr/local/Homebrew git repo 中检出之前的提交。这对我有用:

    /usr/local/Homebrew> git checkout stable^
    HEAD 现在位于 6e3a293... 合并来自bayandin/patch-1 的拉取请求 #7300

更正! “稳定”分支最近移至2.2.13。提交历史仍然包含问题提交:2ae2680 (tag: 2.2.12) Merge pull request #7301 from Bo98/cmake-sdkroot

改为检查 commit-before-the-tag。

/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
  1. 当您准备好撤消第 3 步中的更改时,运行 brew update 将检查 stable 分支(无论处于何种状态)。

【讨论】:

  • 遵循了解决方案,但仍然遇到:错误:子进程中发生异常:NoMethodError:未定义方法'path' for nil:NilClass 你是说吗?路径
  • 谢谢,大卫。我更正了我的答案,应该在标记之前结帐,而不是相对于移动的分支。
  • 嘿伙计们,我尝试更新我的 xcode 并修复了它,奇怪的是。你们确保你的 xcode 更新了吗?
猜你喜欢
  • 1970-01-01
  • 2021-01-20
  • 2019-05-08
  • 1970-01-01
  • 2020-10-29
  • 1970-01-01
  • 1970-01-01
  • 2023-01-20
  • 1970-01-01
相关资源
最近更新 更多