使用 devtools::install_github() 安装无法检测构建工具

Install with devtools::install_github() fails to detect build tools

这是我第一次尝试下载 Github 包,我 运行 在 MacOS Big Sur v11.2.1 上使用 RStudio v1.2.5033 遇到了一些麻烦。

最初,当运行

library(devtools)
devtools::install_github('xuyiqing/gsynth')

我遇到了这个错误:

Warning in install.packages :
  installation of package ‘gsynth’ had non-zero exit status

看了一些书,看来我需要下载命令行工具,所以我下载了 XCode CLI、clang4 和 gfortran。现在我收到一条弹出消息:

"安装构建工具 从源代码构建 R 包需要安装额外的构建工具。 您现在要安装附加工具吗? Y/N"

如果我点击“否”,我会得到这个错误:

Error: Failed to install 'gsynth' from GitHub:
  Could not find tools necessary to compile a package
Call `pkgbuild::check_build_tools(debug = TRUE)` to diagnose the problem.

运行 R 控制台中的上述 pkgbuild 代码,这就是我得到的:

Trying to compile a simple C file
Error: Could not find tools necessary to compile a package
Call `pkgbuild::check_build_tools(debug = TRUE)` to diagnose the problem.
rror: Could not find tools necessary to compile a package

看起来安装此软件包需要克服一些问题(xcode 命令行工具和 OpenMP 支持作为开始),但如果您按照此处的说明进行操作,则应该克服这些问题: https://whosebug.com/a/65334247/12957340

进行必要的更改后,我使用 devtools::install_github('xuyiqing/gsynth') 在我的系统(macOS Big Sur 11.2.3 / R 版本 4.0.3)上成功安装了 gsynth,没有任何问题。

--

以下是万一 link 死亡的说明:

  1. 重新安装 xcode 命令行工具(即使它说的是“最新”)
sudo rm -rf /Library/Developer/CommandLineTools
sudo xcode-select --install
  1. 通过 Homebrew 安装 gcc 和 llvm (instructions for installing Homebrew) 或者,如果您已经通过 Homebrew 安装了 gcc/llvm,请跳到下一步
# This can take several hours
brew install gcc
brew install llvm
  1. 通过 Homebrew 安装 gcc 和 llvm 后:
brew cleanup
brew update
brew upgrade
brew reinstall gcc
brew reinstall llvm
  1. Link一些headers变成/usr/local/include
sudo ln -s /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/* /usr/local/include/

# You can safely ignore warnings like this:
#ln: /usr/local/include//tcl.h: File exists
#ln: /usr/local/include//tclDecls.h: File exists
#ln: /usr/local/include//tclPlatDecls.h: File exists
#ln: /usr/local/include//tclTomMath.h: File exists
#ln: /usr/local/include//tclTomMathDecls.h: File exists
#ln: /usr/local/include//tk.h: File exists
#ln: /usr/local/include//tkDecls.h: File exists
#ln: /usr/local/include//tkPlatDecls.h: File exists
  1. 创建一个新的 ~/.R/Makevars 文件(如果您已经有一个 ~/.R/Makevars 文件,请将其保存在不同的目录中(远离 ~/.R/))并仅将这些行包含在文件:
FLIBS=-L/usr/local/gfortran/lib/gcc/x86_64-apple-darwin19/10.2.0 -L/usr/local/gfortran/lib -lgfortran -lquadmath -lm
CXX1X=/usr/local/gfortran/bin/g++
CXX98=/usr/local/gfortran/bin/g++
CXX11=/usr/local/gfortran/bin/g++
CXX14=/usr/local/gfortran/bin/g++
CXX17=/usr/local/gfortran/bin/g++

LLVM_LOC = /usr/local/opt/llvm
CC=/usr/local/gfortran/bin/gcc -fopenmp
CXX=/usr/local/gfortran/bin/g++ -fopenmp
CFLAGS=-g -O3 -Wall -pedantic -std=gnu99 -mtune=native -pipe
CXXFLAGS=-g -O3 -Wall -pedantic -std=c++11 -mtune=native -pipe
LDFLAGS=-L/usr/local/opt/gettext/lib -L$(LLVM_LOC)/lib -Wl,-rpath,$(LLVM_LOC)/lib
CPPFLAGS=-I/usr/local/opt/gettext/include -I$(LLVM_LOC)/include -I/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include
  1. 从 R/Rstudio
  2. 中的源代码编译一个包
# To check whether openmp is enabled, compile data.table:
install.packages("data.table", type = "source")
  1. 如果您的包编译失败,一些 SO 用户不得不安装新的 gfortran(回复:https://whosebug.com/a/65334247/12957340),您可以从 https://[= 下载68=].com/fxcoudert/gfortran-for-macOS/releases/tag/10.2-bigsur-intel