macOS Sequoia 15.5下使用renv::restore安装R包{Matrix}时出现libintl.h未找到错误
macOS Sequoia 15.5下使用renv::restore安装R包{Matrix}时出现libintl.h未找到错误
别担心,刚接触Mac遇到这种编译类问题太正常了,完全不用怕搞坏系统,我来帮你一步步解决~
首先咱们先搞清楚问题出在哪:你用install.packages("Matrix")能成功,是因为CRAN给Mac提供了预编译好的二进制包,不用在你本地编译;但renv::restore()默认会尝试从源码编译包(尤其是当你的lockfile里记录的是源码版本,或者对应的二进制包不可用时),这时候就需要依赖系统里的一些编译工具和头文件——你遇到的libintl.h找不到的问题,就是因为缺少了gettext这个开源工具集,它包含编译时需要的这个头文件。
下面是具体的解决步骤,都是很安全的操作:
安装Homebrew(如果还没装的话)
Homebrew是Mac上管理开源软件的工具,它不会修改系统核心文件,所有安装的软件都在独立的目录里,完全不用担心破坏系统。打开Mac的「终端」,输入下面的命令回车执行:/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"跟着终端提示完成安装就行,过程可能需要输入你的Mac密码。
用Homebrew安装gettext
安装好Homebrew后,在终端里输入这条命令:brew install gettext它会帮你安装包含
libintl.h的工具集。告诉R这个依赖的位置,再重新运行renv::restore
打开你的R会话,先运行下面两行代码,临时设置环境变量让R能找到刚安装的gettext:Sys.setenv(CPATH = "/opt/homebrew/opt/gettext/include") Sys.setenv(LIBRARY_PATH = "/opt/homebrew/opt/gettext/lib")之后再执行
renv::restore(clean=TRUE),应该就能顺利编译安装Matrix包了。
如果之后还有类似的编译依赖问题,大多都是通过Homebrew安装对应的开发依赖就能解决,放心操作就行~
内容来源于stack exchange
相关产品推荐
相关产品推荐

