M1 Big Sur Mac运行R extrafont时提示找不到GhostScript如何解决
报错核心触发原因
- M1架构Mac上,Homebrew默认安装路径与x86版本Mac存在差异,R/RStudio进程不会自动读取zsh配置文件中的环境变量,无法定位Ghostscript可执行文件
- R/RStudio与Ghostscript的架构不匹配:如果R通过Rosetta转译运行,默认安装的ARM原生Ghostscript无法被识别调用
- 切换zsh shell后,原bash配置文件中的PATH设置对RStudio启动的进程不生效,进一步加剧路径识别失败
可落地修复步骤
1. 定位Ghostscript实际安装路径
打开终端执行命令:which gs
拿到输出的可执行文件路径即可。M1原生架构Mac的Homebrew默认安装路径通常为/opt/homebrew/bin/gs,与x86机型的/usr/local/bin/gs路径不同,如果which gs无返回,可手动到上述两个路径下检查gs文件是否存在。
2. 校准R/RStudio与Ghostscript的架构匹配度
- 在访达的应用目录找到RStudio,右键选择「显示简介」,检查是否勾选「使用Rosetta打开」
- 打开终端执行
arch查看当前终端输出的架构标识:如果终端输出arm64,说明当前运行的是ARM原生版本的Ghostscript,此时需要取消RStudio的Rosetta勾选,让R/RStudio以原生ARM模式运行;如果R必须通过Rosetta兼容x86流程运行,则需要安装x86版本的Ghostscript,避免架构不兼容导致的识别失败。
3. 手动为R绑定Ghostscript路径(绕开shell环境变量影响)
该步骤完全不受bash/zsh切换的影响,是最稳定的解决方式:
- 在RStudio控制台执行命令打开全局R配置文件:
file.edit("~/.Rprofile") - 在打开的配置文件中添加一行环境变量配置,将路径替换为你第一步拿到的实际gs路径:
Sys.setenv(R_GSCMD = "/opt/homebrew/bin/gs") - 保存配置文件后,完全退出并重启RStudio,不要仅重启当前R会话。
4. 验证修复效果
- 在R控制台执行
Sys.getenv("R_GSCMD"),确认返回的路径与你手动配置的路径完全一致 - 重新运行你的示例绘图、PDF导出、
embed_fonts()全流程,测试报错是否消失
避坑提示
- 反复重装
extrafont、extrafontdb包无法解决该问题:这两个包的功能逻辑不涉及Ghostscript的路径识别流程,报错根源是R找不到GS可执行文件,与字体导入流程无关 - 如果配置路径后仍报错,可给gs可执行文件补充执行权限,在终端执行:
chmod +x /opt/homebrew/bin/gs - 无需为了解决该问题把默认shell从zsh切回bash,通过.Rprofile写死路径的方式可以完全绕开shell配置的影响
内容的提问来源于stack exchange,提问作者Will M
相关产品推荐
相关产品推荐

