【问题标题】:icudt error while installing stringi library in R在 R 中安装 stringi 库时出现 icudt 错误
【发布时间】:2026-01-06 15:00:01
【问题描述】:

我写这篇文章是因为我花了好几天才得出这个结果。

底线:stringi 库版本 1.1.3(2017 年 3 月发布)可能存在涉及 icudt 的问题。您可以使用以下命令安装 stringi 1.1.2:

packageurl <- "https://cran.r-project.org/src/contrib/Archive/stringi/stringi_1.1.2.tar.gz"
install.packages(packageurl, repos=NULL, type="source")

我是从how to install an older package 上的一些 RStudio 文档中整理出来的。

背景:

我试图在 R 中安装预测库。最初,我使用的是 R 3.1.2。我还安装了 R 3.3.3 并尝试安装它。我运行的是 CentOS 6.7,没有升级选项。

由于安装 stringi 的问题,Forecast 安装失败。由于下载 ICU 数据库 (icudt) 时出错,stringi 库安装失败 看起来 stringi 1.1.3 添加了有关 icudt 的下载/构建逻辑,并且即将发布的 1.1.4 版本对此逻辑进行了更正(截至日期 2017-04-02)。

我去了 ICU 项目站点:并下载/安装了似乎在以下错误消息中指定的 ICU 库:

checking whether we may compile src/icu55/common/umapfile.c... yes
checking whether we may compile src/icu55/common/putil.cpp... yes
checking whether we can fetch icudt... WARNING: ignoring environment value of R_HOME
downloading ICU data library (icudt)
output path: icu55/data/icudt55l.zip
Error in stri_download_icudt("icu55/data") :
  could not find function "dir.exists"
Calls: identical -> stri_download_icudt
Execution halted
*** icudt could not be downloaded. stopping.
ERROR: configuration failed for package ‘stringi’

在线搜索 icu55、icudt55l.zip 或任何解决此错误的程序都没有找到有效的程序。我下载、构建并安装了 ICU 55.1 和 ICU 58.2。我还更新了 gcc 和 g++。 stringi 1.1.3 的 CRAN 存储库安装说明目前没有提供一套简单的说明来在我有工作的 Internet 连接时成功安装 stringi。

我首先提出这个问题,然后找到了答案。无论如何我都会发布它。我添加了几个链接,但需要删除它们,因为我没有足够的信誉来摆脱它们。

【问题讨论】:

    标签: r icu stringi


    【解决方案1】:

    这与 ICU 无关。这是 stringi 中的一个错误,我已经在 1.1.5 版(现在在 CRAN 上)中修复了它。 dir.exists() 函数特定于 R ≥ 3.2.0 - 我不知道这一点。给您带来不便,敬请见谅。

    【讨论】:

    • 我正在尝试在 RHEL 上安装 1.1.5,不幸的是它无法正常工作,因为 R 找不到正确的 ICU4C 版本,并且显然尝试编译某些东西但无法下载 icudt(后面防火墙)。你有什么建议?我在哪里可以下载 icudt 并将其放在正确的位置?谢谢...
    • @Dieter.Wilhelm stringi 的安装文档指出:如果您决定使用我们的 ICU4C 捆绑包,那么默认情况下,将从我们的镜像服务器之一下载 ICU 数据库。但是,如果您已经下载了适合您平台的 icudt*.zip 版本(big/little endian),您可能希望通过调用来安装该软件包: install.packages("stringi", configure.vars="ICUDT_DIR=&lt;icudt_dir&gt;") 然后您可以将已经下载的 zip任何你喜欢的地方并在 中引用它
    【解决方案2】:

    stringi 库版本 1.1.3(2017 年 3 月发布)可能存在涉及 icudt 的问题。您可以使用以下命令安装 stringi 1.1.2:

    packageurl <- "https://cran.r-project.org/src/contrib/Archive/stringi/stringi_1.1.2.tar.gz"
    install.packages(packageurl, repos=NULL, type="source")
    

    【讨论】: