代码之家  ›  专栏  ›  技术社区  ›  Blairg23 jfs

在ubuntu 18.04上安装新r之后安装r依赖项时出错

  •  2
  • Blairg23 jfs  · 技术社区  · 6 年前

    系统: 乌班图18.04

    显示的原始错误提示我尝试重新安装r和依赖项:

    Error: package or namespace load failed for 'lubridate' in dyn.load(file, DLLpath = DLLpath, ...):  unable to load shared object '/usr/local/lib/R/site-library/stringi/libs/stringi.so':   libicui18n.so.57: cannot open shared object file: No such file or directory
    

    复制步骤:

    1. 安装R: apt install r-base
    2. 尝试安装r依赖项: install.packages(c("dplyr", "lubridate", "qcc", "forecast"), repos='http://cran.us.r-project.org')

    安装期间显示的错误:

    /usr/local/lib/R/site-library/BH/include/boost/smart_ptr/scoped_ptr.hpp:74:31: warning: 'template<class> class std::auto_ptr' is deprecated
    

    安装后显示的错误:

    The downloaded source packages are in
        '/tmp/RtmpnulsEe/downloaded_packages'
    Warning message:
    In install.packages(c("dplyr", "lubridate", "qcc", "forecast", "stringi"),  :
      installation of package 'forecast' had non-zero exit status
    

    吹扫和重新安装后 r-base 和R依赖关系,我看到这个…(已经检查过了 libcurl4-openssl-dev 是最新版本):

    Error: package or namespace load failed for 'forecast' in dyn.load(file, DLLpath = DLLpath, ...): 
    unable to load shared object '/usr/local/lib/R/site-library/curl/libs/curl.so':
    /usr/lib/x86_64-linux-gnu/libcurl.so.4: version `CURL_OPENSSL_3' not found (required by /usr/local/lib/R/site-library/curl/libs/curl.so)
    

    更新: 很明显这是 forecast 图书馆,因为我像这样复制了那个错误:

    $ R
    > library(forecast)
    Error: package or namespace load failed for 'forecast' in dyn.load(file, DLLpath = DLLpath, ...):
     unable to load shared object '/usr/local/lib/R/site-library/curl/libs/curl.so':
      /usr/lib/x86_64-linux-gnu/libcurl.so.4: version `CURL_OPENSSL_3' not found (required by /usr/local/lib/R/site-library/curl/libs/curl.so)
    
    2 回复  |  直到 6 年前
        1
  •  3
  •   Dirk is no longer here    6 年前

    你最初的问题是 stringi 是根据 发行版软件包 版本 libicu 改变了。因为这个分发包不知道您有 lubridate 在/usr/local中,它会改变和破坏事物。

    有很多方法可以解决这个问题。最简单(最窄)的是确保 libicu-dev 安装。然后可以重新安装(即:重建 丝线 )在那之后 润滑油 将加载。

    剩下的,你只是把所有可以靠墙移动的东西都扔了。你需要花点时间意识到你可以 任何一个 安装所有这些 作为二进制文件 (即来自Launchpad的Michael Rutter PPA)或来源。你的电话。我有一个更老的答案来解释这个区别 here (以及在其他后续行动中)我们帮助 r-sig-debian 也列出。

    但简而言之:读这个 README at CRAN (尤指前几段)并考虑购电协议。

        2
  •  1
  •   Blairg23 jfs    6 年前

    尝试以下操作(在每个步骤之间清除并重新安装r)后:

    1. apt purge r-base
    2. 在意识到它们都不支持仿生海狸之前,添加/删除了几个不同的ppa。结果: Release not found
    3. 找到了迈克尔·鲁特的购电协议并试图使用它。结果:来自上面的相同错误消息( 'CURL_OPENSSL_3' not found )
    4. 尝试几种解决方案 SO article . 结果:来自上面的相同错误消息( 找不到'curl_openssl_3' )
    5. this article 并在R中执行以下操作:

      > remove.packages("curl")
      > install.packages("curl")
      > install.packages(c("dplyr", "lubridate", "qcc", "forecast", "stringi", "curl"), repos='http://cran.us.r-project.org')
      

    一切都按计划进行。