终端能启动 Julia,但软件包装不上、图形窗口打不开,或者同一项目在 Linux 与 Mac 上的结果不一致。
最快解法:新项目优先用官方 juliaup 安装 Julia 1.13,并确认 arm64、命令路径和版本输出;旧项目不要覆盖原环境,复制项目文件后,在隔离环境完成包、结果和图形任务回归。
这篇指南适合哪些人
如果你只有 Windows 或 Linux 设备,却需要验证 Julia 项目在 macOS arm64 环境中的表现,这篇指南可以作为迁移 runbook。
它也适合准备升级旧课题、担心二进制依赖失效的科研人员,以及需要为课题组维护可复现环境和远程访问能力的高校技术支持人员。
最后更新于 2026 年 9 月 19 日,版本与安装结论核实自 Julia 官方下载页、安装说明、Julia 1.13 发布说明和 Pkg 文档。
先确定安装渠道与版本边界
截至 2026 年 9 月 19 日,Julia 1.13.0 于 2026 年 9 月 9 日发布,官方将其列为当前稳定版,并提供 macOS Apple Silicon 构建;官方同时列出 Julia 1.10.12 作为 LTS 版本。普通科研用户应优先使用稳定版,只有升级认证成本很高、且项目不需要新语言功能或新包时,才考虑 LTS。具体版本状态以官方手动下载页为准。
| 选择 | 适合情况 | 处理建议 | 决策评分 |
|---|---|---|---|
juliaup 稳定通道 | 新课题、需要并行维护多个版本 | 首选,便于切换和更新 | ★★★★★ |
| 官方 dmg | 离线安装、统一软件分发、手动固定版本 | 可用,但要自行管理 PATH | ★★★★☆ |
| LTS | 机构升级审批严格,项目不追新功能 | 与旧项目单独维护 | ★★★★☆ |
| Nightly 或开发预览 | 测试 Julia 本身或提前验证新特性 | 不用于正式科研生产环境 | ★★☆☆☆ |
| 非官方系统包 | 想用系统包管理器快速安装 | 不作为科研基线 | ★☆☆☆☆ |
juliaup;手动二进制适合无法使用 juliaup,或需要特殊安装布局的情况。Nightly 构建面向开发预览,不应作为论文和课题组生产环境的默认版本。[平台安装说明](https://julialang.org/downloads/platform/)也提醒,社区维护的非官方包可能版本较旧,或缺少官方补丁。
在 Mac 终端执行安装:
curl -fsSL https://install.julialang.org | sh
安装后不要只看“能否打开 REPL”,至少保存下面三组基线输出:
julia --version
julia -e 'println(VERSION); println(Sys.ARCH); println(Sys.BINDIR)'
juliaup status
如果你选择 dmg,官方安装包会放入 Julia-1.13.app;命令行入口可以手动建立,但这会增加旧版本 symlink 与 PATH 冲突的可能。多个 Julia 应用可以共存,真正需要控制的是终端调用的路径,而不是盲目删除所有 Julia 文件。macOS 安装说明提供了手动安装的参考。
先排除 Apple Silicon 与旧入口混用
Apple Silicon Mac 上最容易误判的情况是:Julia 可以启动,包也能解析,但某个 artifact、C / Fortran 库或外部可执行文件在加载阶段失败。原因通常不是 Julia 代码本身,而是 Mac 芯片、Julia 二进制、Homebrew 依赖或外部程序没有使用同一架构。
先取证:
uname -m
command -v julia
file "$(command -v julia)"
julia -e 'println(Sys.ARCH); println(VERSION)'
| 检查对象 | 期望结果 | 出现异常时的含义 |
|---|---|---|
| Mac 内核 | arm64 | 需要确认是否真的运行在 Apple Silicon 环境 |
| Julia 架构 | 官方输出对应的 arm64 架构标识 | 可能调用了 Intel 构建 |
| 命令路径 | 来自当前 juliaup 管理入口或明确指定的官方应用 | PATH 中存在旧 Julia |
| 外部依赖 | 与目标任务兼容的 arm64 构建 | artifact、动态库或命令行工具可能无法加载 |
**停止条件:**如果⚠️ 不要把 Rosetta 当作默认修复方案。只有在目标依赖确实没有 arm64 路线,且你已经记录了失败包名、外部库和架构输出时,才建立隔离的 x86_64 兼容环境;不要让整个课题长期依赖混合架构。
uname -m、Sys.ARCH 和外部工具架构无法解释一致,先停止安装更多科研包。继续 add 或 update 只会扩大排查范围。
按问题层级处理 juliaup、Shell 与 PATH
常见现象有三类:终端提示找不到 julia;你切换了通道但仍启动旧版本;Terminal 与集成终端显示的 Julia 路径不同。
不要先删主目录。先记录:
type -a julia
command -v julia
juliaup status
juliaup default
echo "$PATH"
然后按低风险顺序处理:
- 命令不存在:重新打开终端,让安装器写入的 PATH 生效;仍无效时,检查当前 Shell 的启动文件是否加载了
juliaup入口。 - 版本没有切换:查看
juliaup status和juliaup default,确认默认通道是否仍指向旧版本。 - 路径重复:用
type -a julia找出多个入口,先把旧路径从 Shell 配置中注释,再重新打开终端。 - 不同 Shell 结果不同:分别记录 Bash、Zsh 或集成终端的 PATH,不要只修复你偶尔使用的那个入口。
- 确实需要旧版:安装独立通道,并在项目命令中明确指定版本;不要用全局默认版本替代项目声明。
juliaup 会处理 PATH 相关事项,并支持安装特定版本、更新稳定通道。这正是它比手动 dmg 更适合多项目科研环境的原因。[安装手册](https://docs.julialang.org/en/v1.11.0-rc2/manual/installation/)可用于核对安装和命令来源。
用 Project 与 Manifest 固定科研项目
全局环境适合临时试用包,不适合作为论文、课程作业或课题组项目的唯一依赖记录。每个项目至少保留:
Project.toml
Manifest.toml
Project.toml 描述项目直接依赖和兼容约束,Manifest.toml 记录更完整的依赖图和具体版本。两者配合后,另一台机器才能按相同环境实例化;Manifest 通常由 Pkg 生成和维护,不应手工编辑。[TOML 文件说明](https://pkgdocs.julialang.org/dev/toml-files/)对此有明确说明。
旧项目迁移时,先复制目录并保留原始文件:
cp -R old-project julia-1.13-test
cd julia-1.13-test
julia +1.13 --project=. -e 'using Pkg; Pkg.instantiate()'
如果课题需要同时支持旧版本和 Julia 1.13,可以把新环境的 Manifest 保存为:
Manifest-v1.13.toml
从 Julia 1.10.8 起,Pkg 支持按 Julia 主次版本选择版本专用 Manifest;匹配当前版本时,Julia 会优先使用对应文件。不同 Julia 版本使用不同 Manifest 的规则提供了具体说明。
| 项目状态 | 推荐做法 | 不要做的事 |
|---|---|---|
| 新课题 | Julia 1.13 + 独立 Project / Manifest | 把依赖装进全局环境 |
| 旧论文项目 | 原环境只读保留,新目录做回归 | 直接覆盖原 Manifest |
| 旧项目需要双版本 | 使用版本专用 Manifest | 让一次 update 改写全部依赖 |
| 只有 Project.toml | 执行 instantiate 并记录解析结果 | 误以为 activate 已经完成安装 |
| 需要课题组复现 | 提交代码、Project、Manifest 和验收输出 | 只提交包名列表 |
activate 只负责切换项目;缺少依赖时仍需执行 instantiate。存在 Manifest 时,Pkg 会优先按照其中记录安装依赖,否则会根据 Project 解析可行版本。[环境管理文档](https://pkgdocs.julialang.org/v1.10/environments/)可用于核对这一流程。
处理科研包安装失败与校园网络限制
Julia 科研项目升级后,错误信息可能来自不同层级,不能都归类为“包不兼容”:
| 首个有效错误位置 | 常见原因 | 排查方向 |
|---|---|---|
| 注册表更新 | DNS、代理、证书或校园网络策略 | 核对官方域名 HTTPS 访问 |
| 包服务器下载 | 防火墙、代理认证、连接超时 | 询问学校网络管理员 |
| Git 下载 | 私有仓库、Git 认证或未注册包 | 单独测试仓库访问 |
| artifact 获取 | 平台没有对应二进制或下载失败 | 核对包的 Apple Silicon 支持 |
| 本地编译 | C / Fortran 工具链或头文件缺失 | 查看构建日志和外部依赖 |
| 运行阶段 | 图形后端、动态库或输入数据问题 | 执行代表性科研任务 |
JULIA_PKG_SERVER,客户端会改用指定服务器。[Pkg 协议文档](https://pkgdocs.julialang.org/dev/protocol/)说明了包、注册表和 artifact 的获取关系。遇到校园代理或证书拦截时,应让学校网络管理员核对访问策略,不要关闭证书校验或绕过安全控制。
建议使用一个小型科研包和一个最小项目作为第一道通过标准:
julia +1.13 --project=. -e 'using Pkg; Pkg.instantiate(); Pkg.precompile()'
julia +1.13 --project=. -e 'using LinearAlgebra; println(VERSION); println(Sys.ARCH)'
这只能证明基础环境可以实例化,不能证明完整课题已经迁移成功。具体包是否支持 Apple Silicon,仍要回到该包自己的官方文档、发行说明或构建记录核实。
用验收结果决定继续、双轨还是回退
不要用 REPL 中的简单算术替代科研验收。至少准备一份公开或脱敏数据,按下面顺序检查:
- 环境实例化:项目能否在干净目录完成
instantiate和预编译。 - 终端计算:核心脚本能否在
--project=.下运行。 - 编辑器或 Notebook 接入:VS Code、Notebook 或课题组既有工作区能否找到目标 Julia。
- 图形输出:绘图窗口、无头导出或图像文件写入是否正常。
- 文件读写:输入路径、编码、临时目录和结果导出是否符合原项目假设。
- 结果一致性:比较关键数值、随机种子、数据处理结果和依赖状态,而不是只看包能否
using。 - 长任务连续性:记录远程连接中断、重新连接、日志保存和任务恢复情况。
- 若架构、实例化、核心结果和图形输出全部通过,选择 继续使用 Julia 1.13。
- 若核心计算通过,但某个旧包或图形后端失败,选择 双轨保留,不要立即删除旧环境。
- 若关键依赖只有 x86_64 构建,且课题依赖本地图形或特殊库,先 回退旧版本或继续使用 Linux。
- 若问题来自校园网络、权限或远程连接,而不是 Julia 本身,先修复基础设施,再判断版本兼容性。
- 若结果无法复现,即使安装命令成功,也不能把迁移标记为完成。
常见问题 FAQ
新项目安装 Julia 1.13,怎样在 juliaup 和 dmg 之间选择?
新项目和需要并行维护多个 Julia 版本的课题,优先使用官方 juliaup,因为它负责版本通道和 PATH 管理。只有在离线安装、固定软件分发或需要手动保存某个官方二进制时,才选择 dmg。无论采用哪种方式,都要核对 julia --version、Sys.ARCH 和实际命令路径。
科研项目升级后软件包装不上,应该先检查哪里?
先不要删除 ~/.julia,也不要覆盖旧项目的 Manifest.toml。记录首个有效错误,区分注册表、包服务器、Git、artifact、C 或 Fortran 编译失败,再在独立目录复制项目文件进行 Julia 1.13 实例化。若错误只出现在某个二进制依赖,先核对该包的 Apple Silicon 支持,而不是立即启用 Rosetta。
怎样确认 Apple Silicon Mac 上运行的是 arm64 Julia?
先执行 uname -m 确认 Mac 内核架构,再执行 julia -e 'println(Sys.ARCH); println(VERSION)' 查看 Julia 架构和版本,最后用 command -v julia 与 juliaup status 确认命令来源和通道。若结果出现 x86_64、旧路径或不同 Shell 输出不一致,应先修复入口,不要直接重装。
没有 Mac,怎样测试 Julia 项目的 macOS 兼容性?
准备项目代码、Project.toml、Manifest.toml、脱敏数据和一组已知结果,在远程 Apple Silicon Mac 上执行实例化、最小计算、绘图、文件导出和长任务恢复测试。远程环境适合短期验收与迁移决策,但不能替代需要本地仪器、特殊 USB 设备或长期满载运行的实体 Mac。
怎样让旧项目继续使用原来的依赖组合?
为旧项目保留只读副本,并在新目录中使用 Julia 1.13 建立独立环境。可以保留原 Manifest.toml,同时使用 Manifest-v1.13.toml 维护新版本专用依赖;Julia 会优先使用与当前主次版本匹配的 Manifest。迁移完成前,不要让一次 resolve 或 update 覆盖旧环境。
如果你已经整理好项目文件、依赖清单和代表性测试,却没有可用的 Apple Silicon Mac,短期租用远程 Mac 往往比直接购买更适合做这次迁移验收:你可以在同一份项目文件上完成 Julia 1.13 的实例化、图形任务和长任务测试,再决定继续租用、购置设备,还是维持 Linux 与 macOS 双轨。
相比直接购买,当前方案的真实缺点是初始投入高、设备闲置时仍承担折旧,而且实验室多人共享时还要处理权限与维护;相比普通远程桌面环境,缺少真实 macOS arm64 主机又会让架构结论失去意义。需要临时算力或短期兼容性验证时,先用 MACGPU 完成验收,再根据结果决定长期方案,会更稳妥。