求助:安装R包text2vec时因缺失float.so共享对象文件导致安装失败
我尝试安装text2vec包时遇到了如下错误:
install.packages("text2vec")
Error in dyn.load(file, DLLpath = DLLpath, ...) :
unable to load shared object '/var/R/library/rsparse/libs/rsparse.so':
float.so: cannot open shared object file: No such file or directory
Calls:... asNamespace -> loadNamespace -> library.dynam -> dyn.load
Execution halted
ERROR: lazy loading failed for package ‘text2vec’
- removing ‘/var/R/library/text2vec’
Warning in install.packages :
installation of package ‘text2vec’ had non-zero exit status
我的会话信息:
R version 4.0.3 (2020-10-10) Platform: x86_64-pc-linux-gnu (64-bit) Running under: Red Hat Enterprise Linux Matrix products: default BLAS/LAPACK: /usr/lib64/libopenblasp-r0.3.3.so locale: [1] LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C LC_TIME=en_US.UTF-8 LC_COLLATE=en_US.UTF-8 [5] LC_MONETARY=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8 LC_PAPER=en_US.UTF-8 LC_NAME=C [9] LC_ADDRESS=C LC_TELEPHONE=C LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C attached base packages: [1] stats graphics grDevices utils datasets methods base other attached packages: [1] readr_1.4.0 usethis_2.0.1 purrr_0.3.4 rebus_0.1-3 testthat_3.0.3 stringi_1.6.2 scales_1.1.1 [8] tictoc_1.0.1 ggplot2_3.3.3 topicmodels_0.2-12 udpipe_0.8.6 tidytext_0.3.1 tidyr_1.1.3 stringr_1.4.0 [15] dplyr_1.0.5 odbc_1.3.2 loaded via a namespace (and not attached): [1] Rcpp_1.0.6 lubridate_1.7.10 lattice_0.20-41 assertthat_0.2.1 utf8_1.2.1 slam_0.1-48 plyr_1.8.6 [8] cellranger_1.1.0 R6_2.5.0 stats4_4.0.3 quanteda_3.1.0 pillar_1.5.1 cld3_1.4.1 rlang_0.4.10 [15] readxl_1.3.1 rstudioapi_0.13 data.table_1.14.0 blob_1.2.1 Matrix_1.2-18 rebus.base_0.0-3 config_0.3.1 [22] bit_4.0.4 munsell_0.5.0 compiler_4.0.3 janeaustenr_0.1.5 xfun_0.24 pkgconfig_2.0.3 tidyselect_1.1.0 [29] tibble_3.1.0 rebus.numbers_0.0-1 fansi_0.4.2 crayon_1.4.1 dbplyr_2.1.1 withr_2.4.1 SnowballC_0.7.0 [36] grid_4.0.3 gtable_0.3.0 lifecycle_1.0.0 DBI_1.1.1 magrittr_2.0.1 tokenizers_0.2.1 RcppParallel_5.1.4 [43] cli_2.4.0 reshape2_1.4.4 fs_1.5.0 NLP_0.2-1 xml2_1.3.2 stopwords_2.2 ellipsis_0.3.1 [50] generics_0.1.0 vctrs_0.3.7 fastmatch_1.1-3 wordcloud_2.6 RColorBrewer_1.1-2 tools_4.0.3 bit64_4.0.5 [57] glue_1.4.2 rebus.unicode_0.0-2 hms_1.0.0 rebus.datetimes_0.0-1 parallel_4.0.3 yaml_2.2.1 tm_0.7-8 [64] colorspace_2.0-0 knitr_1.33 modeltools_0.2-23
解决方案
你遇到的问题核心在于text2vec依赖的rsparse包需要float包提供的float.so共享库,但该库未被正确安装或系统无法定位。试试以下步骤解决:
1. 单独安装并验证float包
先确保float包能正常安装和加载,这是问题的根源:
install.packages("float") # 验证是否加载成功 library(float)
如果这一步没有报错,再重新安装text2vec:
install.packages("text2vec")
2. 重新安装rsparse包
有时候rsparse的安装可能不完整,导致与float的关联失效,尝试卸载后重装:
remove.packages("rsparse") install.packages("rsparse") # 验证加载状态 library(rsparse)
确认没问题后再安装text2vec。
3. 安装Red Hat系统的编译依赖
在Red Hat Enterprise Linux上,编译R包需要基础的开发工具和线性代数库,执行以下命令安装:
sudo yum install gcc gcc-c++ make cmake sudo yum install openblas-devel lapack-devel
完成后重新安装float和text2vec。
4. 从源码编译安装
如果二进制包安装失败,尝试源码编译,确保编译过程中正确链接float库:
install.packages("float", type = "source") install.packages("text2vec", type = "source")
补充建议
你的R版本是4.0.3,虽然text2vec和float在该版本下支持,但如果上述方法都无效,可以考虑升级R到4.2.x及以上版本,新版本的包管理系统会更稳定,减少依赖问题。
内容的提问来源于stack exchange,提问作者Nina van Bruggen

