问题描述
我正在用GitHub Actions测试R包,它在Windows和Linux上都成功。
但是,在Mac OS上它失败了,正如您在logs上看到的那样:
Warning in grSoftVersion() :
unable to load shared object '/Library/Frameworks/R.framework/Resources/modules//R_X11.so':
dlopen(/Library/Frameworks/R.framework/Resources/modules//R_X11.so,6): Library not loaded: /opt/X11/lib/libSM.6.dylib
Referenced from: /Library/Frameworks/R.framework/Versions/4.0/Resources/modules/R_X11.so
Reason: image not found
Warning in cairoVersion() :
unable to load shared object '/Library/Frameworks/R.framework/Resources/library/grDevices/libs//cairo.so':
dlopen(/Library/Frameworks/R.framework/Resources/library/grDevices/libs//cairo.so,6): Library not loaded: /opt/X11/lib/libXrender.1.dylib
Referenced from: /Library/Frameworks/R.framework/Versions/4.0/Resources/library/grDevices/libs/cairo.so
Reason: image not found
Warning in png(filename = file,width = width,height = height,units = "in",:
failed to load cairo DLL
Error in external_img(new_src,height = height) :
src must be a string starting with 'rId' or an image filename
Calls: %>% ... <Anonymous> -> body_add_gg -> body_add_img -> external_img
Execution halted
我没有Mac电脑,也不打算在将来拥有,因此我无法自己进行测试。
正如我在include cairo R on a mac上看到的那样,这可能是由于未在测试计算机上安装X11。
如何告诉GitHub Actions该代码取决于X11?
编辑:
这是我的GitHub Actions配置文件:link。添加此代码可解决问题:
- name: Install X11 dependencies on MacOS
if: runner.os == 'macOS'
run: |
brew cask install xquartz
解决方法
GitHub动作默认VM上有Homebrew
https://github.com/actions/virtual-environments/blob/main/images/macos/macos-10.15-Readme.md
因此您可以通过以下方式通过自制程序安装X11
brew cask install xquartz
https://formulae.brew.sh/cask/xquartz
在执行R测试之前。