【问题标题】:How to know which linux libraries an R package depends on? [closed]如何知道 R 包依赖于哪些 linux 库? [关闭]
【发布时间】:2019-02-02 01:15:50
【问题描述】:

我在 R 中做一些依赖于包 ldatuning 的工作。我设置了包并在我的本地 Windows 机器上运行了一个脚本。看起来它需要一段时间才能运行,所以我在云中启动了一个 Linux VM(Ubuntu 16.06)来运行脚本。我尝试使用install.packages('ldatuning') 在 R 中设置环境,但出现了很多错误。经过一番挖掘,我意识到ldatuning 所依赖的一些 R 包也依赖于 Linux 库。事实上,有三个不同的包依赖于一个 Linux 库。在每种情况下,我都必须搜索堆栈溢出,并且总是找到像this onethis one 这样的简短答案。那么回答这些问题的人是如何知道要安装哪些库的呢?我知道经常有 R 包直接依赖于 Linux 库,但我怎么能提前知道我需要的确切 Linux 库呢?例如,对于 R 库 gmp,我的猜测是尝试 sudo apt-get install gmp,但这不起作用 - 它是 sudo apt-get install libgmp3-dev。我怎么知道R包gmp依赖libgmp3-dev

【问题讨论】:

    标签: r linux


    【解决方案1】:

    不幸的是,目前还没有一种很好的、​​完整的、统一的方法来处理这个问题。为此,一个很棒的项目是https://github.com/r-hub/sysreqsdb,您绝对应该查看它,并且可能会对您有所帮助。

    另外,通常当你因为未满足系统依赖而安装包时出错时,部分安装输出会告诉你如何解决问题;例如,这是pdftools 安装失败的部分输出:

    No package 'poppler-cpp' found
    Using PKG_CFLAGS=-I/usr/include/poppler/cpp -I/usr/include/poppler
    Using PKG_LIBS=-lpoppler-cpp
    ------------------------- ANTICONF ERROR ---------------------------
    Configuration failed because poppler-cpp was not found. Try installing:
     * deb: libpoppler-cpp-dev (Debian, Ubuntu, etc)
     * rpm: poppler-cpp-devel (Fedora, CentOS, RHEL)
     * csw: poppler_dev (Solaris)
     * brew: poppler (Mac OSX)
    If poppler-cpp is already installed, check that 'pkg-config' is in your
    PATH and PKG_CONFIG_PATH contains a poppler-cpp.pc file. If pkg-config
    is unavailable you can set INCLUDE_DIR and LIB_DIR manually via:
    R CMD INSTALL --configure-vars='INCLUDE_DIR=... LIB_DIR=...'
    --------------------------------------------------------------------
    ERROR: configuration failed for package ‘pdftools’
    * removing ‘/home/duckmayr/R/x86_64-pc-linux-gnu-library/3.5/pdftools’
    

    但是,在某些情况下,这些方法仍无法解决您的问题。我总是会检查包的DESCRIPTION 和/或网站——他们经常在那里提到系统依赖项,也经常提到你可以从哪里获得依赖项,但并非总是如此。对于其余情况,您只需要希望幸运地在 Google 上搜索您的问题即可。

    示例:pdftools

    pdftools CRAN page(我通过谷歌搜索“r pdftools”找到)显示来自其说明的信息,包括

    系统要求:Poppler C++ API:libpoppler-cpp-dev (deb) 或 poppler-cpp-devel (rpm)。单元测试还需要“poppler-data”包(rpm/deb)

    因此,即使他们没有上述信息丰富的消息,我也可以通过这种方式找到它。

    示例:ldatuning

    如果您查看ldatuning CRAN page,您将看不到这样的条目。那是因为它没有任何系统依赖项——它的 R 包依赖项有。在这种情况下,您会查看哪个软件包安装失败(通过查看install.packages("ldatuning") 之后的输出来查看(听起来就像您的情况一样),Rmpfr 的安装失败。

    所以,直接前往Rmpfr CRAN page 看看

    系统要求:gmp (>= 4.2.3)、mpfr (>= 3.0.0)

    这更有帮助,但不如pdftools 示例那么有用。但是,它也列出了

    网址:http://rmpfr.r-forge.r-project.org/

    然后,在那个页面上,我们看到

    从源安装:需要 MPFR 和 GMP 库 来自上述网页,或者更方便地来自您的 Linux 分发包系统:

    Debian、Ubuntu 等。 . . . . . . .: sudo apt-get install libmpfr-dev
    Fedora, Redhat, CentOS, (open)SuSE: sudo dnf install mpfr-devel

    这应该让你排序。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-01-09
      • 2018-09-23
      • 2014-01-10
      • 1970-01-01
      • 1970-01-01
      • 2014-07-09
      • 1970-01-01
      相关资源
      最近更新 更多