企业内网Linux环境下如何为R的arrow包安装C++依赖?
问题1 具体解决步骤
结合你的内网环境,优先选择以下两种可行路径,按优先级排序:
- 路径一:预安装Arrow C++库后安装R包(成功率最高,也是官方推荐的受限环境安装方案)
- 路径二:修改Arrow安装时的资源拉取地址,指向公司内部Artifactory镜像
两种路径的具体操作见后续问题的对应说明。
问题2 可以修改curl指向公司github镜像拉取资源
Arrow R包源码安装过程中,默认会从公网github拉取依赖的C++库二进制包,你可以通过设置环境变量替换拉取地址:
- 先确认公司Artifactory上的github镜像地址前缀,所有原本指向
https://github.com/的资源都可以通过此前缀访问 - 在R会话中先执行以下环境变量配置,再执行安装命令:
# 替换Arrow依赖拉取的基础地址为公司镜像,括号内替换为你公司实际的镜像地址 Sys.setenv(ARROW_DOWNLOAD_URL_ROOT = "https://***.***.***/artifactory/github-mirror/apache/arrow/releases/download/") # 保留你之前的curl配置 options(download.file.method = "curl") options(download.file.extra = "--insecure") # 再执行安装 install.packages("arrow", dependencies=TRUE, type="source")
如果公司镜像地址映射规则不同,你也可以直接设置ARROW_BINARY_URL环境变量为对应Arrow C++二进制包的完整内网地址。
问题3 可以通过预先安装Arrow C++库解决问题
这是受限环境下最稳妥的安装方案,操作步骤如下:
- 从公司Artifactory下载对应你系统版本、Arrow版本的C++库安装包(rpm/deb/二进制源码包均可),在终端完成安装,确保安装路径被加入系统
LD_LIBRARY_PATH环境变量 - 回到R会话,设置环境变量告知R包已经安装了系统级的Arrow C++库:
Sys.setenv(ARROW_USE_PKG_CONFIG = "true") # 如果C++库安装在非标准路径,额外取消注释以下行并替换为实际路径 # Sys.setenv(PKG_CONFIG_PATH = "/你的Arrow C++库安装路径/lib/pkgconfig") options(download.file.method = "curl") options(download.file.extra = "--insecure") install.packages("arrow", dependencies=TRUE, type="source")
安装时会直接调用系统已安装的C++库,不会再尝试公网拉取资源。
内容的提问来源于stack exchange,提问作者KedAU
相关产品推荐
相关产品推荐

