苹果于 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

命令各部分的解释:

  1. env: 用于在重建后的环境中运行命令。
  2. /usr/bin/arch -x86_64: 这部分调用 arch 命令(通常是由 Rosetta 2 提供,在一些如苹果的 M1/M2 芯片的 ARM 架构计算机上用于模拟 x86_64 架构的环境),并指定使用 -x86_64 选项,最终目的是模拟一个 x86_64 架构的环境。
  3. /bin/zsh: 这是 Zsh shell 的路径。Zsh 是一个常用的命令行解释器。
  4. --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的更多相关文章

  1. IDEA Debug模式下启动慢的解决办法

    工程没有做什么大的改动,近期Idea在debug模式下启动耗时800s +,run模式下200s.Idea debug模式启动的时候会有这样的提示: 方法断点会戏剧性的降低debug的速度.当时并没有 ...

  2. eclipse的debug模式下启动不了tomcat

    使用eclipse启动tomcat,正常模式下可以启动tomcat,却在debug模式下无法启动tomcat. 这个问题可能是由于eclipse和tomcat的交互而产生的,在以debug模式启动to ...

  3. Mac上深色模式下的精美炫酷软件

    针对发布的 macOS Mojave 10.14 系统中,最大的改变就是引入了深色模式,尤其对技术开发人员来说非常实用,非常的酷! 深色模式使用一种较深的配色方案,这种配色作用于整个系统,包括 Mac ...

  4. IDEA 在debug模式下启动慢或者无法启动解决

    参考:https://www.cnblogs.com/han-1034683568/p/8603588.html 背景 这两天在开发项目的时候发现用debug模式启动项目的时候,项目启动速度非常慢甚至 ...

  5. intelliJ idea debug模式下启动慢的原因

    今天在idea上以debug方式启动项目的时候,特别慢,启动半天启动不起来,一直以为是数据库连接的原因,但重启mysql服务后也不好使,特别郁闷... 最后发现原来是之前调试的时候加的断点还在,导致启 ...

  6. IDEA debugger模式下启动慢

    很可能是因为代码里面有端点造成的. 点击如下图的重叠红点,找到对应端点点掉就可以了.

  7. spark yarn cluster模式下任务提交和计算流程分析

    spark可以运行在standalone,yarn,mesos等多种模式下,当前我们用的最普遍的是yarn模式,在yarn模式下又分为client和cluster.本文接下来将分析yarn clust ...

  8. 在 Apple Silicon Mac 上 DFU 模式恢复 macOS 固件

    DFU 模式全新安装 macOS Big Sur 或 macOS Monterey 请访问原文链接:https://sysin.org/blog/apple-silicon-mac-dfu/,查看最新 ...

  9. 无意苦争春,一任群芳妒!M1 Mac book(Apple Silicon)能否支撑全栈工程师的日常?(Python3/虚拟机/Docker/Redis)

    原文转载自「刘悦的技术博客」https://v3u.cn/a_id_187 就像大航海时代里突然诞生的航空母舰一样,苹果把玩着手心里远超时代的M1芯片,微笑着对Intel说:"不好意思,虽然 ...

  10. 如何在Apple Silicon Mac上主动安装Rosetta2

    前提是您的电脑搭载了Apple Silicon处理器 command + space(空格),输入"终端",打开. 输入 : softwareupdate --install-ro ...

随机推荐

  1. 全国产!全志T3+Logos FPGA开发板(4核ARM Cortex-A7)规格书

    评估板简介 创龙科技TLT3F-EVM是一款基于全志科技T3四核ARM Cortex-A7 + 紫光同创Logos PGL25G/PGL50G FPGA设计的异构多核国产工业评估板,ARM Corte ...

  2. C语言gcc编译环境搭建

    第一步,根据以下链接下载gcc工具包: gcc工具包下载地址: 链接:https://pan.baidu.com/s/1JqEjakTcWLPv7p6zkah6sA提取码:k4d2 第二步,将下载好的 ...

  3. P6626 题解

    有一个很暴力的解法,就是以询问点为根 DFS. 考虑优化,我们考虑优化换根. 当根节点从父亲移动到它的某个孩子时,孩子的子树内所有点深度减 \(1\) 其余点深度加 \(1\). 同理,当根节点从某个 ...

  4. 1. 简述一下你对 HTML 语义化的理解?

    用正确的标签做正确的事情.1.HTML 语义化让页面的内容结构化,结构更清晰,便于对浏览器.搜索引擎解析; 2.即使在没有样式 CSS 的情况下也能以一种文档格式显示,并且是容易阅读的; 3.搜索引擎 ...

  5. yolov5+deepsort+slowfast复现

    1.运行环境 ubuntu 18.04.1 Cuda 11.5 Python 3.8.15 torch 1.10.1+cu113 torchvision 0.11.2+cu113 2.安装PyTorc ...

  6. Pandas库学习笔记(3)---Pandas Series

    Pandas Series Pandas Series基本操作 pandas.Series Series结构如下: pandas.Series(data, index, dtype, copy) 构造 ...

  7. 最好用的截图工具,提取自QQ(带以截图搜图、ocr文字识别,截长图,贴图,色号等功能)

    背景 现在登录QQ比较少,手机的QQ已经具备ocr识别功能,但是电脑上不登陆QQ,微信的简单截图功能又不能进行ocr识别,对于想提取的文字特别麻烦,需要找别的工具去提取.机缘发现网络上这款提取自QQ的 ...

  8. 【JavaScript】前端算法题(重建二叉树、反向输出链表每个节点)

    前言 今天复习了一些前端算法题,写到一两道比较有意思的题:重建二叉树.反向输出链表每个节点 题目 重建二叉树: 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树.假设输入的前序遍历和中序遍历的 ...

  9. Java解压rar5兼容rar4

    RAR文件格式由WinRAR开发,广泛用于文件压缩和归档.随着技术的发展,RAR5作为更新的版本,引入了多项改进以提高压缩效率和数据安全性. 压缩效率:RAR5通过增大字典大小至32MB,相较于RAR ...

  10. 压力测试工具httperf使用方法

    目录 压力测试工具httperf使用方法 通过tar zxvf解压httperf-0.9.0.tar.gz 进入目录 安装c++编译环境 开始编译 进入编译后的bin目录 开始测试 压力测试工具htt ...