Apple Silicon 芯片 Mac 在 x86_64 模式下启动 Kettle
苹果于 2020 年推出了自家设计的基于 ARM 架构的 M1 芯片,在日常生活的大部分使用过程中,M1 的体验很好。然而,依然存在一小部分软件无法兼容 ARM 架构,需要我们模拟 x86 的架构来运行。
其中一个例子是 Kettle(又称 PDI)。笔者当年使用 Kettle 时无法直接双击打开,为了打开 Kettle,我们需要进入 x86 模式的终端,然后再在 x86 终端中输入命令打开 x86 版本的 Kettle。
截至 2022.10.13,Pentaho 9.3 尚不支持 AArch64 架构,必须在 x86_64 模式的终端中运行,并且依赖 x86_64 的 Java 11 运行环境。
现在已经很久没用过 Kettle 了,不过当时为了打开 Kettle 还是费了不少事,所以今天想起来特此记录一下。
打开 x86 模式的终端
首先我们要打开一个运行在 x86 模式下的终端。如何做呢?使用下面这条命令即可打开一个 x86 模式的终端:
env /usr/bin/arch -x86_64 /bin/zsh --login
命令各部分的解释:
env: 用于在重建后的环境中运行命令。/usr/bin/arch -x86_64: 这部分调用arch命令(通常是由 Rosetta 2 提供,在一些如苹果的 M1/M2 芯片的 ARM 架构计算机上用于模拟 x86_64 架构的环境),并指定使用-x86_64选项,最终目的是模拟一个 x86_64 架构的环境。/bin/zsh: 这是 Zsh shell 的路径。Zsh 是一个常用的命令行解释器。--login: 这是传递给 Zsh 的参数,指示它启动一个登录 shell。
因此,当你运行这条命令时,它会在模拟的 x86_64 环境中启动一个新的 Zsh 登录 shell。
设置终端描述文件方便下次使用(可选)
为了我们每次启动 x86 终端时不用再输入这条命令,我们可以为终端创建一个描述文件,专门用来打开 x86 终端。
打开终端,按下 ⌘ + , 打开设置,转到“描述文件”标签页,在窗口的左下角点击 + 号创建一个新描述文件。
在新描述文件的设置窗口中,转到“Shell”标签页,勾选“运行命令”复选框,并在命令栏中将我们的命令 env /usr/bin/arch -x86_64 /bin/zsh --login 输入进去。
之后,你可以为你的描述文件设置一个新的名字,比如 x86 终端,我这里设置成了 Rosetta Shell。
设置完成的效果如图:

下次你要打开 x86 终端的时候,直接选择启动你的描述文件就可以打开一个运行在 x86 模式下的终端了。或者,如果你经常要使用 x86 终端的话,你可以将你的描述文件设为默认(点击左下角的“默认”按钮)。
安装 x86 版本的 Homebrew
为了下载到 x86 版本的 Kettle,我们首先需要一个 x86 版本的 Homebrew,这样一会儿使用 brew 命令下载到的 Kettle 才是 x86 版本的。
在 x86 终端中运行 Homebrew 安装命令:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
由于国内的网络原因,下载 Homebrew 的速度可能较慢。对于还没有实现高速科技上网的同学,这里提供一个网站 Homebrew 中文网,可以按照这个网站提供的链接快速安装 Homebrew。
️ 注意,有些同学可能已经安装过 ARM 架构的 Homebrew 了。为了让两种 Homebrew 共存,你还需要在你的 ~/.zshrc 文件中添加如下命令:
# 如果运行在转译模式下,将 x86 架构 Homebrew 的路径添加到环境变量 PATH
if [ "$(sysctl -n sysctl.proc_translated)" = "1" ]; then
PATH="/usr/local/homebrew/bin:/usr/local/homebrew/sbin:$PATH"
fi
安装完成之后,使用下面的命令验证你是否正在使用 x86 架构的 Homebrew(你可能需要启动一个新的 x86 终端):
which brew
如果命令的输出是 /usr/local/homebrew/bin/brew,则说明你的 Homebrew 是 x86 架构的。如果输出是 /opt/homebrew/bin/brew,则说明你的 Homebrew 是 ARM 架构的。
安装 x86 版本的 Kettle
确定当前使用的是 x86 架构的 Homebrew后,使用下面的命令安装 x86 架构的 Kettle:
brew install kettle
安装完成之后,为了方便使用,我们可以在 ~/.zshrc 中添加如下命令:
alias kettle='export JAVA_HOME="$(/usr/libexec/java_home -v 11)" && PATH="${JAVA_HOME}/bin:$PATH" && env /usr/bin/arch -x86_64 /bin/sh /usr/local/homebrew/Cellar/kettle/9.3.0.0-428/libexec/spoon.sh'
Kettle 的版本号
9.3.0.0-428需要你根据自己的情况修改。你可以通过命令brew info kettle查看自己安装的 Kettle 的版本号。
解释一下这条命令:
这里设置了一个别名 kettle,别名的作用就是把一长串命令用一个短的名字替代,下次我们想执行这条命令时只需键入这条短的名字就可以了。
接下来看别名的组成部分:
export JAVA_HOME="$(/usr/libexec/java_home -v 11)" && PATH="${JAVA_HOME}/bin:$PATH" && env /usr/bin/arch -x86_64 /bin/sh /usr/local/homebrew/Cellar/kettle/9.3.0.0-428/libexec/spoon.sh
首先设置了一个环境变量 JAVA_HOME,并把 JAVA_HOME 添加到环境变量 PATH 中。
这里的 JAVA_HOME 使用了 Java 11 的根目录$(/usr/libexec/java_home -v 11)。因为 Kettle 是基于 Java 的,而 Kettle 9.3 兼容最好的 Java 版本是 Java 11。如果你还没有安装 Java 11 的话,在 x86 终端中运行 brew install openjdk@11。
接下来,使用了类似前面的命令 env /usr/bin/arch -x86_64 /bin/sh 在 x86 模式下打开 sh,并使用 sh 启动 Spoon /usr/local/homebrew/Cellar/kettle/9.3.0.0-428/libexec/spoon.sh
安装 JDK 11
笔者当时安装 Kettle 时的最新版是 9.3,该版本的 Kettle 支持的 Java 版本为 Java 11。因此我们要安装一个 JDK 11。由于我们的 JDK 是要为 x86 版本的 Kettle 服务的,因此我们也要安装 x86 版本的 JDK。
确保你在 x86 模式的终端,然后运行:
brew install openjdk@11
启动 Kettle
现在,如果你想打开 Kettle,只需在终端输入 kettle 即可(不用打开 x86 终端):
kettle
参考:
Apple Silicon 芯片 Mac 在 x86_64 模式下启动 Kettle的更多相关文章
- IDEA Debug模式下启动慢的解决办法
工程没有做什么大的改动,近期Idea在debug模式下启动耗时800s +,run模式下200s.Idea debug模式启动的时候会有这样的提示: 方法断点会戏剧性的降低debug的速度.当时并没有 ...
- eclipse的debug模式下启动不了tomcat
使用eclipse启动tomcat,正常模式下可以启动tomcat,却在debug模式下无法启动tomcat. 这个问题可能是由于eclipse和tomcat的交互而产生的,在以debug模式启动to ...
- Mac上深色模式下的精美炫酷软件
针对发布的 macOS Mojave 10.14 系统中,最大的改变就是引入了深色模式,尤其对技术开发人员来说非常实用,非常的酷! 深色模式使用一种较深的配色方案,这种配色作用于整个系统,包括 Mac ...
- IDEA 在debug模式下启动慢或者无法启动解决
参考:https://www.cnblogs.com/han-1034683568/p/8603588.html 背景 这两天在开发项目的时候发现用debug模式启动项目的时候,项目启动速度非常慢甚至 ...
- intelliJ idea debug模式下启动慢的原因
今天在idea上以debug方式启动项目的时候,特别慢,启动半天启动不起来,一直以为是数据库连接的原因,但重启mysql服务后也不好使,特别郁闷... 最后发现原来是之前调试的时候加的断点还在,导致启 ...
- IDEA debugger模式下启动慢
很可能是因为代码里面有端点造成的. 点击如下图的重叠红点,找到对应端点点掉就可以了.
- spark yarn cluster模式下任务提交和计算流程分析
spark可以运行在standalone,yarn,mesos等多种模式下,当前我们用的最普遍的是yarn模式,在yarn模式下又分为client和cluster.本文接下来将分析yarn clust ...
- 在 Apple Silicon Mac 上 DFU 模式恢复 macOS 固件
DFU 模式全新安装 macOS Big Sur 或 macOS Monterey 请访问原文链接:https://sysin.org/blog/apple-silicon-mac-dfu/,查看最新 ...
- 无意苦争春,一任群芳妒!M1 Mac book(Apple Silicon)能否支撑全栈工程师的日常?(Python3/虚拟机/Docker/Redis)
原文转载自「刘悦的技术博客」https://v3u.cn/a_id_187 就像大航海时代里突然诞生的航空母舰一样,苹果把玩着手心里远超时代的M1芯片,微笑着对Intel说:"不好意思,虽然 ...
- 如何在Apple Silicon Mac上主动安装Rosetta2
前提是您的电脑搭载了Apple Silicon处理器 command + space(空格),输入"终端",打开. 输入 : softwareupdate --install-ro ...
随机推荐
- 全国产!全志T3+Logos FPGA核心板(4核ARM Cortex-A7)规格书
核心板简介 创龙科技SOM-TLT3F是一款基于全志科技T3四核ARM Cortex-A7处理器 + 紫光同创Logos PGL25G/PGL50G FPGA设计的异构多核全国产工业核心板,ARM C ...
- HTTP 和 HTTPS,为什么HTTPS安全?
HTTP协议通常承载与 TCP协议之上,在HTTP和TCP之间添加一个安全协议层(SSL或TSL),这个时候,就成了我们常说的HTTPS 默认HTTP的端口号为80,HTTPS的端口号为443 因为网 ...
- Spring5.X的bean的scope作用域
scope属性 singleton:单例,默认值,调用getBean方法返回是同一个对象,实例会被缓存起来,效率比较高,当一个bean被标识为singleton时候,spring的IOC容器中只会存在 ...
- CF1956B Nene and the Card Game 题解
Nene and the Card Game 题意 有 \(2n\) 张牌,\(1,2,3,\dots,n\) 皆有两张. 有两个人在玩游戏,每个人有 \(n\) 张卡片,当一人出了一张编号为 \(k ...
- Linux 中 Crontab 执行时的环境变量问题(allure命令不执行)
前几天做了UI自动化脚本部署linux服务器,但是放下脚本的allure命令不执行(生成allure报告和启动allure服务的命令不执行),然后就各种找问题,一开始怀疑是allure的环境变量问题, ...
- java面试一日一题:讲下ThreadLocal
问题:请讲下ThreadLocal 分析:首先要了解ThreadLocal的基本原理:其次要理解ThreadLocal发生内存泄漏的原因:最后ThreadLocal是如何做到线程隔离的 回答要点: 主 ...
- 【SQL】 牛客网SQL训练Part3 较难难度
获取当前薪水第二多的员工的emp_no以及其对应的薪水salary 请你查找薪水排名第二多的员工编号emp_no.薪水salary.last_name以及first_name,不能使用order by ...
- wandb原来是可以网络直连的,国内可以无障碍使用
一直不是很常使用神经网络训练可视化的工具,包括:tensorboard,等等,wandb平时也是直接就忽略,不过最近无意间看了看这个效果,感觉还是不错的,于是尝试了一下. 网上很多人说这个工具服务器在 ...
- 【转载】 在Ubuntu环境下,搜狗输入法乱码问题的解决
原文作者:高坦的博客 | Tan's Blog 原文链接:https://www.cnblogs.com/gtscool/p/12234104.html本文采用 BY-NC-SA 许可协议.转载请注明 ...
- 这学校真是“nice”——人还未走,网就先停了
人还没走,手续还没办,网就给我停了,这就要清人了,这学校太"nice"了!!!