在 M1 macbook 上 brew install elasticsearch 导致“可执行文件中的 CPU 类型错误”错误

Posted

技术标签:

【中文标题】在 M1 macbook 上 brew install elasticsearch 导致“可执行文件中的 CPU 类型错误”错误【英文标题】:brew install elasticsearch on M1 macbook results in "Bad CPU type in executable" error 【发布时间】:2022-01-24 01:21:40 【问题描述】:

我有一台配备 M1 处理器的全新 Macbook Air

按照官方指南https://www.elastic.co/guide/en/elasticsearch/reference/current/brew.html 我尝试安装elasticsearch 7:

brew tap elastic/tap
brew install elastic/tap/elasticsearch-full

一旦我尝试使用 $ elasticsearch 启动它,我就会收到此错误:

/opt/homebrew/Cellar/elasticsearch-full/7.16.2/libexec/bin/elasticsearch-env: line 83: /opt/homebrew/Cellar/elasticsearch-full/7.16.2/libexec/jdk.app/Contents/Home/bin/java: Bad CPU type in executable

如果我尝试使用brew services start elastic/tap/elasticsearch-full 启动服务,它会失败,并且我会在日志文件/opt/homebrew/var/log/elasticsearch.log 中得到同样的错误

/opt/homebrew/Cellar/elasticsearch-full/7.16.2/libexec/bin/elasticsearch-env: line 83: /opt/homebrew/Cellar/elasticsearch-full/7.16.2/libexec/jdk.app/Contents/Home/bin/java: Bad CPU type in executable

一旦我打开导致问题第 83 行的文件 (elasticsearch-env):

# check the Java version
"$JAVA" "$XSHARE" -cp "$ES_CLASSPATH" org.elasticsearch.tools.java_version_checker.JavaVersionChecker

如果我尝试执行

/opt/homebrew/Cellar/elasticsearch-full/7.16.2/libexec/jdk.app/Contents/Home/bin/java

我得到了错误

 Bad CPU type in executable

因此,在 elasticsearch-full brew 安装期间似乎安装了一个糟糕的 Java 架构(可能不是 M1,而是 x84 或其他什么?)。这是几个小时前购买的全新 Macbook。 Elasticsearch 是我尝试对其进行 brew install 的第一件事(因此没有安装之前的 Java 应用程序)

有人知道如何解决这个问题吗?

【问题讨论】:

【参考方案1】:

您也可以通过在 ARM Mac 上安装 Rosetta 2 来解决此问题: softwareupdate --install-rosetta.

显然brew仍然安装64位版本的elasticsearch。

【讨论】:

【参考方案2】:

好的,问题是我需要单独安装 Java JDK。

我刚刚安装了Java OSX ARM DMG,然后 ES 开始工作了

只要$ java -version不给你报错这个错误就不会出现

【讨论】:

为了改变 Elasticsearch 的内存消耗,我建议检查 blog.eq8.eu/til/… 默认情况下 ES 消耗大量内存

以上是关于在 M1 macbook 上 brew install elasticsearch 导致“可执行文件中的 CPU 类型错误”错误的主要内容,如果未能解决你的问题,请参考以下文章

MacBook Pro m1 搭建前端开发环境

在 M1 Macbook 上反应原生运行 iOS 的构建错误

Macbook Pro上如何修改brew源

Macbook Pro上如何修改brew源

Macbook Pro上如何修改brew源

Xcode 在 M1 MacBook Pro 上引发构建错误