brew install elasticsearch on M1 macbook 导致 "Bad CPU type in executable" 错误
brew install elasticsearch on M1 macbook results in "Bad CPU type in executable" error
我有一台配备 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 应用程序)
有人知道如何解决这个问题吗?
好的,问题是我需要单独安装 Java JDK。
我刚刚安装了 Java OSX ARM DMG,然后 ES 就可以工作了
只要$ java -version
不报错就不会出现这个错误
您也可以通过在 ARM 上安装 Rosetta 2 来解决此问题 Mac:
softwareupdate --install-rosetta
.
显然 brew 仍然安装 64 位版本的 elasticsearch。
我有一台配备 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 应用程序)
有人知道如何解决这个问题吗?
好的,问题是我需要单独安装 Java JDK。
我刚刚安装了 Java OSX ARM DMG,然后 ES 就可以工作了
只要$ java -version
不报错就不会出现这个错误
您也可以通过在 ARM 上安装 Rosetta 2 来解决此问题 Mac:
softwareupdate --install-rosetta
.
显然 brew 仍然安装 64 位版本的 elasticsearch。