问题标签 [rosetta-2]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
2079 浏览

python - 在虚拟环境中安装python 3.9.x M1版本

我正在使用 M1 mac,并且正在使用带有 python 3.8.8 的 conda 环境。

我尝试使用“conda update python”进行更新,但 3.8.8 是我可以获得的最新版本,它在 Rosetta 2 上运行。

我想将 BigSur 的最新 3.9.x(因此它可以本地运行)安装到 conda env(或任何 env)。

我试图下载python 3.9.4通用版安装程序,但我不知道如何将它放在虚拟环境中。

谢谢!

0 投票
1 回答
272 浏览

weblogic12c - 是否可以在 Apple M1 计算机上安装 Weblogic 12.2.1.4?

我一直在寻找有关此的信息,但我没有找到任何东西。我认为 Oracle 站点上没有可用于在 Apple M1 设备上安装 Weblogic 12.2.1.X 的版本,但也许可以使用 Rosetta 2 来完成。

有人试过吗?我不能,因为我还没有 M1 设备,但我想知道,因为我仍然开发在 Weblogic 上运行的软件。

0 投票
1 回答
120 浏览

macos - 应用程序根据启动方法报告不同的架构

我已经为 M1 Macs 制作了 Scilab 的本地构建(请参阅https://www.utc.fr/~mottelet/scilab_for_macOS.html),并且该应用程序在通过双击其图标启动时似乎触发了 Rosetta2,因此它的整体环境被错误地报告为 x86_64 而不是 arm64。例如,您可以从 Scilab 命令行启动 shell 命令并获取输出。例如uname -m产量

当 Scilab 从其图标启动或open从终端使用时。

但是,当应用程序主脚本直接从终端启动时,即在此处键入

由于应用程序已针对 arm64 架构编译,因此 Scilab 中的相同 unix 命令会产生预期结果:

2021 年 1 月 6 日更新:

运行应用程序总是调用主scilab脚本(稍后调用实际的scilab-bin本机二进制文件)。当app被双击时yield得到的进程ps列表

活动监视器将匹配过程显示为: 在此处输入图像描述 在此处输入图像描述

正如您所猜测的那样,shell 的架构是错误的。我试过使用

Info.plist它并没有改变任何东西。

如何调试这个问题?提供一个更紧凑的例子并不容易。如果读者中的一些专家可以帮助我,您只需下载 Scilab arm64 构建(请参阅上面的链接)并从 dmg 存档(由 Apple 公证)中获取该应用程序。首次运行时,Scilab 将下载本机 Java 8 JRE。感谢您的帮助和见解!

S。

0 投票
0 回答
95 浏览

macos - Rosetta 下的运行时库崩溃

在使用 Rosetta 的 Apple Silicon 机器上运行时,我们的应用程序出现了神秘的崩溃。崩溃来自 Appleruntimedyld库,并且总是具有相同类型的堆栈,但没有太多有用的信息。

  • 都有相同的 5 个堆栈帧模式,底部是dyld,然后是 4 in runtime,但都只是地址,不知道调用了什么符号
  • 有时偏移值相同,有时则不同。当您将它们组合在一起时,我们至少有两组堆栈;但足够接近以至于它出现了相同的根本问题。
  • 似乎只加载了这两个库,因此可能是在启动时崩溃,然后才充分设置,或者在崩溃期间发生了一些奇怪的事情,我们只在 .crash 中捕获了一小部分图片,或者发生了一些损坏.
  • 全部在 Apple Silicon 机器中
  • 有些在 macOS 11 上,有些在 macOS 12 上,所以这不是 Monterey beta 问题
  • 由于代码签名无效,它们都崩溃了,但这似乎不可靠,如果我们之后确实可以毫无问题地启动应用程序,这似乎是这种情况(基于我们收到的日志报告)。

这是一个典型的例子(部分应用信息被编辑):

非常感谢任何帮助或指导。我不能肯定这是 Apple 的问题,因为我无法在我们的应用程序或其他应用程序中可靠地重现它。但它似乎是我们应用程序中的一个错误。

谢谢!

0 投票
1 回答
864 浏览

assembly - M1 上的其他 x86-64 仿真器是否可以利用 Rosetta 2 使用的相同优化?

我很好奇使用 Rosetta 2 与仿真在 Apple M1 平台上运行 x86-64 二进制文件的性能特征截然不同,例如 Docker Desktop 目前使用QEMU所做的事情。

我理解为什么仿真这么慢,但是在这个 Twitter 线程中详细解释了为什么 Rosetta 2 这么快:https ://twitter.com/ErrataRob/status/1331735383193903104

该解释的要点是,在通常情况下,arm 和 x86 具有相反(且不兼容)的内存寻址方案,这需要大量的仿真开销,但 M1 芯片通过硬件优化解决了这个问题,允许它使用两种寻址方案访问内存。实际上,当运行 Rosetta 2 仿真指令时,会设置一个标志以让处理器知道使用 x86 样式的寻址方案。

假设这个解释是合理的(如果有人有比上面的 Twitter 线程更好的来源报告,我会在评论中包含它),从技术上讲,这种优化是否可以用于完整的硬件仿真,例如运行 x86- 64 个 Linux Docker 容器,还是运行一个完整的 x86-64 Windows 桌面虚拟机,比如VMware Fusion/VirtualBox?或者,这些场景中的单独操作系统层是否排除了利用内存排序优化的能力?

另外,此处理器模式(标志或指令)是否已记录并发布以供第 3 方使用,还是仅对 Apple 私有?

0 投票
1 回答
548 浏览

macos-big-sur - 如何在没有 Rosetta 2 的情况下在 M1 mac 中本地安装所有内容?

我已经使用 M1 macbook 将近半年了,最初,我在 Rosetta 2 下安装了许多软件包,并且在本地安装了许多软件包(我假设)。我在 Rosetta 2 下运行我的终端,但是每当我使用 brew 安装任何软件包时,我都会使用arch -arm64 brew install <pkg-name>. 现在,我不知道我是否一直在 Rosetta 2 下或本机安装软件包。

无论如何,现在我想安装所有软件包和软件的本机版本,从现在开始,它们中的大多数都是本机可用的。请帮我弄清楚我该怎么做。我想要做的就是删除所有内容,然后在没有 Rosetta 2 的情况下本地安装。

我想重新安装的一些东西是: -

  1. 家酿
  2. 迷你 conda 和 python 库。
  3. gcc 和 g++
  4. MySQL
  5. 节点和 npm

另外,将来,如果我想在本地安装任何东西,那么我应该怎么做?

0 投票
0 回答
44 浏览

python - 在 M1 上有 x86_64 和 ARM python 版本

是否可以同时拥有 x86_64 和 ARM 版本的 python?一些软件包仍然与 ARM 版本不完全兼容,因此安装两个版本的 python 可能很有用

0 投票
2 回答
974 浏览

flutter - “pod install”命令在 Android Studio 北极狐 mac m1 的终端中不起作用

我在 Macbook Air M1 2020 型号上使用 Arctic Fox 2020.3.1(ARM 版本 - 为 Apple 芯片设计),运行颤振项目。我成功地能够在 Android 模拟器上运行,但是当我尝试在附加的 iOS 设备或 iOS 模拟器上运行时,“pod install”命令失败并且构建失败。但是当我在 Rosetta 2 上打开终端并手动尝试“pod install”时,它会安装所有 pod,之后我可以从 XCODE 但不能从 Android Studio 运行构建,所以我的问题是:Android Studio 内的终端是否运行在 Apple 上(不是在 Rosetta 2 上),这就是它失败的原因。

注意:我已更改终端的配置以在 Rosetta 2 上强制运行它。

在此处输入图像描述 在此处输入图像描述

当我尝试从工作室运行 ios 时会发生这种情况

0 投票
1 回答
55 浏览

macos - 如何在 Rosetta 2 下运行的 x86_64 进程中以原始刻度(即 mach_absolute_time)获取系统时钟的真实值?

我正在编写一个 macOS x86-64 应用程序,由于仅 x86-64 的库依赖关系,该应用程序当前无法编译为通用二进制文件。

此应用程序需要与在 Apple Silicon mac 上作为 arm64 运行的其他进程进行交互,并且在这样做时,它需要以原始刻度获取系统时钟的值,如mach_absolute_time().

但是,在 Apple Silicon mac 上,mach_absolute_time()从本机 arm64 应用程序调用和从 Rosetta 2 下的 x86-64 应用程序调用时具有不同的行为。

在 Intel mac 上,mach_absolute_time()以纳秒为单位返回系统时钟,并mach_timebase_info()返回 1:1 的纳秒与时钟滴答比。

在 Apple Silicon mac 上,系统时钟的单位不再以纳秒为单位,因此mach_timebase_info()不会返回 1:1 的比率。(在我的 M1 Mac Mini 上,我得到 125:3 的比率。)

但是,在 Rosetta 2 下运行的 x86-64 应用程序将获得与在 Intel 处理器上相同的值,即 1:1 的比率并mach_absolute_time()返回以纳秒为单位的值。

这对我来说是个问题,因为我需要我的 x86-64 应用程序来获得真正的价值,mach_absolute_time()就好像它是从 arm64 进程中调用的一样。

到目前为止,我还没有找到一种方法来做到这一点。我知道的每个与时钟相关的函数在 Rosetta 2 下调用时都会返回“假”值。我能想到的唯一解决方案是将作为通用二进制文件的可执行文件捆绑到我的应用程序中,从我的应用程序调用它,拥有它获取作为 arm64 本地运行的时基信息,并将值传回。但这比我想要的解决方案要重得多。

有没有办法在 Rosetta 2 下运行的 x86-64 应用程序中获取真正的系统时钟时基?

0 投票
0 回答
470 浏览

python-3.x - 在 Mac M1 上的 miniconda 中创建环境

我最近买了一台带有 M1 处理器的新 Mac。从终端我通过 home-brew 安装了 miniconda。然后,我尝试像往常一样使用创建一个新的 conda 环境conda create --name my_env。然后,我尝试使用 激活环境conda activate my_env,但出现以下错误:

我当然服从,然后我运行conda init bash并关闭并重新启动我的 shell。但是,当我尝试激活我的环境时,我再次收到上述错误(并且重新运行conda init bash并不能解决问题,因为它只是说“未采取任何措施”。

问题:

  1. 有谁知道为什么我还是不能跑conda activate
  2. 甚至在没有 Rosetta 的情况下将 miniconda 用于 Python 是否明智?

非常感谢