Redhat 7.4环境下R 3.4.2无法安装stringi 1.2.2包求助
解决RHEL7.4上安装stringi 1.2.2失败的问题
问题背景
你遇到的核心矛盾很明确:
- RHEL7.4默认yum源提供的ICU4C版本是50.2,远低于stringi 1.2.2要求的**>=52**
- 系统默认的gcc/g++(4.8.5)对C++11特性支持有限,导致stringi自带的ICU bundle编译失败
我之前帮不少企业用户处理过这类旧版本R包的兼容性问题,咱们一步步来解决:
分步解决方案
1. 补全编译必备依赖
先确保系统有完整的编译工具链,执行以下命令:
yum install -y gcc gcc-c++ make cmake libtool zlib-devel openssl-devel
2. 手动编译安装高版本ICU4C
咱们选择和日志里提到的icu61匹配的61.1版本,编译到自定义目录避免干扰系统原有库:
# 下载源码包 curl -O https://github.com/unicode-org/icu/releases/download/release-61-1/icu4c-61_1-src.tgz tar xzf icu4c-61_1-src.tgz cd icu/source # 配置编译参数,指定安装路径 ./configure --prefix=/usr/local/icu61 --enable-static --enable-shared make -j$(nproc) # 用多线程加速编译 make install
3. 指定ICU路径安装stringi
设置环境变量让R能找到新编译的ICU,再安装stringi时明确指定ICU路径:
# 临时设置环境变量,让系统识别新ICU库 export LD_LIBRARY_PATH=/usr/local/icu61/lib:$LD_LIBRARY_PATH export PKG_CONFIG_PATH=/usr/local/icu61/lib/pkgconfig:$PKG_CONFIG_PATH # 带参数安装stringi ./R CMD INSTALL stringi_1.2.2.tar.gz --configure-args="--with-icu=/usr/local/icu61"
4. 验证安装效果
启动R后执行以下命令,无报错则说明安装成功:
library(stringi) stri_test()
额外提示
- 如果你不想编译ICU,也可以尝试加
--disable-cxx11参数安装stringi,但旧版gcc下这个方法稳定性差,手动编译ICU是最靠谱的方案 - 另外,你用的R3.4.2版本非常老旧,后续如果业务允许,建议升级到更稳定的R版本,能减少很多依赖兼容性问题
内容的提问来源于stack exchange,提问作者Andrew F.
相关产品推荐
相关产品推荐

