由于缺少GSL,GN程序包构建在Unix机器上失败 - GNU Scientific Library

时间:2018-03-07 23:01:33

标签: r travis-ci gsl r-package

我面临着R包开发的一个特别棘手的问题。我自己的包名为ggstatsplothttps://github.com/IndrajeetPatil/ggstatsplot),取决于userfriendlyscience,它取决于另一个名为MBESS的包,它本身最终依赖于另一个名为{{1}的包}。在{strong> Windows 计算机上安装gsl完全没有问题(由ggstatsplot持续集成平台评估:https://ci.appveyor.com/project/IndrajeetPatil/ggstatsplot)。

但是无论何时在 Unix 计算机上安装软件包,都会引发因AppVeyor和{{1}而无法下载ggstatsplot的错误无法下载,因为userfriendlyscience无法下载。在具有虚拟Unix机器的MBESS持续集成平台上也发现了同样的事情,其中​​包构建失败(https://travis-ci.org/IndrajeetPatil/ggstatsplot)。

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

所以我真的很感激,如果有人能提供任何有用的建议,我可以通过从源头上解决这个问题,让我的包裹用户的生活变得更简单。我是否应该在软件包本身中包含哪些内容来代表用户处理此问题?

1 个答案:

答案 0 :(得分:7)

通过更改你的R包可能没有令人满意的解决方案(我不确定哪种方式)。如果gsl包作者(包括一个前R Core成员)没有配置它以避免pre-req安装linux包,那么可能有充分的理由不这样做。

但是大多数R + Linux用户都知道某些R软件包首先需要安装底层Linux库(例如,通过aptdnf / yum)。

主要问题:让用户轻松安装

尝试在GitHub自述文件和CRAN INSTALL file上非常清楚。 gsl包有decent CRAN directions。这导致以下bash代码:

sudo apt-get install libgsl0-dev

我见过的clear(linux pre-req包)文档的最佳示例来自curlsf包。 sf的{​​{3}}仅列出了3个库的人名,但CRAN page为三个主要分发分支提供了准确的bash命令。 curl包也很好地完成了这项工作(例如,GitHub pageCRAN)。例如,它提供以下说明和bash代码:

  

在Linux上从源代码安装需要GitHub。在 Debian Ubuntu 上使用libcurl

sudo apt-get install -y libcurl-dev

理想情况下,您的文档将描述如何在多个发行版上安装gsl linux软件包。

免责声明:我从未开发过直接需要Linux软件包的软件包,但我经常使用它们。如果有更多示例可以提供帮助,libcurl4-openssl-dev包含一个脚本,用于在新的Ubuntu机器上安装内容。一些命令在包文档中明确说明;有些人很少或没有文件,需要研究。

编辑2018-04-07 : 我遇到了我最喜欢的新例子:this doc使用sys package文件在R控制台中生成以下消息。在新计算机上安装100多个软件包时,很高兴看到这个直接消息,而不必跟踪R软件包及其依赖项的文档。

  

在Debian / Ubuntu上,这个包需要AppArmor。

     

请运行:sudo apt-get install libapparmor-dev

另一个好的是config,它也使用pdftools文件(也由config开发)。

次要问题:在Travis上安装

Jeroen Ooms不同,userfriendly travis config file显然直接安装了很多二进制文件(包括gsl)。

或者,我更熟悉告诉travis安装linux软件包,如current ggstatsplot version所示。作为奖励,这可能更接近于复制典型用户在自己的机器上所做的事情。

addons:
  apt:
    packages:
    - libcurl4-openssl-dev

跟进2018-03-13 Indrajeet和我调整了travis文件,因此它正在运行。 yaml文件中的curl's config file

  1. libgsl0-dev部分下添加了packages条目(类似于上面的libcurl4-openssl-dev条目)。
  2. 软件包列在Two sections were changed部分中,因此它们作为二进制文件安装。构建在50分钟后超时,现在不到10分钟。在这个特定的包中,r_binary_packages部分嵌套在Travis矩阵的Linux部分中,因此它不会干扰他在Travis上的两个OS X作业。