我在 R 包开发方面面临着一个特别棘手的问题。我自己的包,称为 ggstatsplot ( https://github.com/IndrajeetPatil/ggstatsplot ),依赖于 userfriendlyscience ,它依赖于另一个名为 MBESS 的包,而后者本身最终依赖于另一个名为 gsl 的包。在 Windows 机器上安装 ggstatsplot 完全没有问题(由 AppVeyor 持续集成平台评估: https://ci.appveyor.com/project/IndrajeetPatil/ggstatsplot )。

但是每当在 Unix 机器上安装该包时,就会抛出ggstatsplot 无法下载的错误,因为userfriendlyscienceMBESS 无法下载,因为gsl 无法下载。同样的事情也出现在 Travis 与虚拟 Unix 机器的持续集成平台上,其中包构建失败( https://travis-ci.org/IndrajeetPatil/ggstatsplot )。

现在,为 Unix 机器上的用户解决此问题的一种方法是配置 GSL(如下所述:
installing R gsl package on Mac ),但我不可能期望 ggstatsplot 的每个用户都经历配置 GSL 的艰巨过程。我希望他们只运行 install.packages("ggstatsplot") 并完成它。

因此,如果有人能就如何通过从源头上消除这个问题来让我的包用户的生活变得更简单,我将不胜感激。我是否应该在包本身中包含一些内容来代表用户处理这个问题?

最佳答案

通过更改R包,这可能没有令人满意的解决方案(我不确定哪种方法都可以)。如果gsl软件包作者(包括以前的R Core成员)没有配置它以避免预先安装Linux软件包,则可能有充分的理由不这样做。
但是,大多数R + Linux用户理解某些R软件包首先需要安装基础Linux库(例如,通过aptdnf/yum)可能是一种安慰。
主要问题:使用户易于安装
尝试在GitHub自述文件和CRAN INSTALL file上变得非常清晰。 gsl软件包具有decent CRAN directions。这将导致以下bash代码:

sudo apt-get install libgsl0-dev
我所见的清晰(Linux pre-req软件包)文档的最佳示例是curlsf软件包。 sfCRAN page仅列出3个库的人名,但是GitHub page为三个主要发行分支提供了确切的bash命令。 curl包也做得很好(例如CRANGitHub)。例如,它提供以下解释和bash代码:
sudo apt-get install -y libcurl-dev
理想情况下,您的文档将描述如何在多个发行版上安装gsl linux软件包。
免责声明:我从未开发过直接需要Linux软件包的软件包,但是我经常使用它们。万一更多的例子有帮助,this doc包含一个脚本,我可以使用该脚本在新的Ubuntu机器上安装东西。软件包文档中明确说明了一些命令。有些文件很少或没有文件,需要进行研究。
编辑2018-04-07 :
我遇到了我最喜欢的新示例:sys package使用config文件在R控制台中生成以下消息。在新计算机上安装100多个软件包时,很高兴看到此直接消息,而不必跟踪R软件包及其相关性的文档。

另一个不错的是pdftools,它也使用了config文件(也由Jeroen Ooms开发)。
次要问题:在Travis上安装
userfriendly travis config file不同,gsl显然直接安装了许多二进制文件(包括current ggstatsplot version)。
另外,我更熟悉告诉travis安装linux软件包,如curl's config file所示。另外,它可能更接近地复制了典型用户在自己的计算机上执行的操作。
addons:
  apt:
    packages:
    - libcurl4-openssl-dev
跟进2018-03-13 Indrajeet和我调整了travis文件,使其正常工作。 yaml文件中的Two sections were changed:
  • libgsl0-dev部分下添加了packages条目(类似于上面的libcurl4-openssl-dev条目)。
  • 软件包在 r_binary_packages 部分中列出,因此它们可以作为二进制文件安装。构建在50分钟后超时,现在不到10分钟。在这个特定的程序包中,r_binary_packages部分嵌套在Travis矩阵的Linux部分中,因此它不会干扰他在Travis上的两个OS X作业。
  • 关于由于缺少 GSL,R 包在 Unix 机器上构建失败 - GNU 科学图书馆,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49162670/

    10-12 20:32