02
核心科研软件与真实项目
macOS 27 下的科研软件启动风险
科研软件的风险通常集中在四类:主程序本身不支持新系统、插件调用失败、旧版许可证无法激活,以及项目文件或脚本在新环境中产生不同结果。不能靠软件图标逐个双击来判断,真正需要列出的,是当前论文或实验不可替代的软件,例如 MATLAB 主程序、R 包、Python 环境、神经影像脚本、质性分析项目、统计插件和自定义命令行工具。
将软件分为三类:
- 明确支持:厂商支持页面明确列出 macOS 27,或发布说明明确覆盖该版本。
- 尚未确认:软件可以启动,但厂商支持矩阵没有 macOS 27。
- 存在否决条件:依赖旧版驱动、Intel-only 插件、节点绑定许可证或特定硬件。
每个核心软件至少做三项测试:
- 打开真实项目副本,而不是空白欢迎页。
- 执行一条论文中不可替代的分析流程,例如导入数据、运行脚本、生成图表或导出统计结果。
- 保存结果并重新打开,检查路径、字体、插件、图表和中间文件是否正常。
MATLAB 的官方支持页显示,当前版本对 Apple Silicon 与 Intel Mac 的支持边界并不相同;Apple Silicon 版本还可能需要额外的 Java Runtime。即使 MATLAB 主程序能启动,特定 Toolbox、支持包或硬件接口仍然可能不可用,因此“软件打开成功”不能作为放行依据。(MathWorks MATLAB for Mac 要求)
Apple Silicon、Rosetta 2 与工具链
Apple 已说明,macOS 27 是 Rosetta 支持 Intel-only Mac 应用的最后一个主要版本;macOS 27 之后,Apple Silicon Mac 上的 Intel-only 应用将不再按原方式运行。旧游戏等少数场景可能保留部分功能,但这不是科研工作流可以依赖的长期基线。(Apple Developer Rosetta 文档)
因此,验收时不要只检查应用是否能打开,还要识别实际进程架构:
file /Applications/应用名称.app/Contents/MacOS/*
uname -m
arch
命令行工具链则应检查:
which python
python -c "import platform; print(platform.machine())"
which R
brew --prefix
重点看以下混用情况:
- 主程序是 arm64,但 Python 原生包仍是 x86_64。
- R 本体能够运行,某个 C/C++ 原生包却无法加载。
- Homebrew 安装在 Apple Silicon 常见的
/opt/homebrew 路径,但脚本仍调用 /usr/local 下的 Intel 工具。
- 编译器、动态库、命令行脚本和插件分别来自不同架构。
Homebrew 官方文档将 /opt/homebrew 作为 Apple Silicon 的默认路径,并把 macOS 15 至 macOS 27 的 Apple Silicon 组合列为支持范围。安装位置正确,不等于课题组所有 formula、第三方库和自编译依赖已经通过测试;必须把首个失败依赖记录下来,而不是反复重装主程序。(Homebrew 安装文档)
Python 官方文档也保留了 universal2 构建选项,表示同一构建可以包含 x86-64 和 arm64。但某个 Python 解释器支持双架构,不代表所有科学计算包、动态库和外部命令都支持双架构。(Python 构建配置文档)
经验提醒: 如果失败日志首先指向某个 .dylib、编译扩展或插件,不要先卸载科研软件。先记录进程架构、解释器路径、动态库路径和安装来源,通常能更快判断问题是在系统升级、架构转换还是依赖版本。