繁体   English   中英

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

[英]R package build failing on Unix machines due to missing GSL - GNU Scientific Library

我正面临着R包开发的一个特别棘手的问题。 我自己的包,称为ggstatsplothttps://github.com/IndrajeetPatil/ggstatsplot ),取决于userfriendlyscience ,这依赖于其他软件包叫做MBESS ,这本身最终取决于另一个叫包gsl Windows机器上安装ggstatsplot没有任何问题(由AppVeyor持续集成平台评估: httpsAppVeyor )。

但每当包被在Unix机器上安装,它抛出的错误ggstatsplot不能下载,因为userfriendlyscienceMBESS不能下载,因为gsl不能下载。 Travis持续集成平台与虚拟Unix机器也发生了同样的事情,其中​​包构建失败( https://travis-ci.org/IndrajeetPatil/ggstatsplot )。

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

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

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

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

主要问题:使用户可以轻松安装

尝试在GitHub自述文件和CRAN INSTALL文件中超级清楚。 gsl包具有不错的CRAN方向 这导致以下bash代码:

sudo apt-get install libgsl0-dev

我见过的clear(linux pre-req包)文档的最好例子来自curlsf包。 sfCRAN页面仅列出了3个库的人名,但GitHub页面为三个主要的分发分支提供了准确的bash命令。 卷曲包也很好地完成了这一点(例如, CRANGitHub )。 例如,它提供以下说明和bash代码:

在Linux上从源代码安装需要libcurl DebianUbuntu上使用libcurl4-openssl-dev

sudo apt-get install -y libcurl-dev

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

免责声明:我从未开发过直接需要Linux软件包的软件包,但我经常使用它们。 如果有更多的例子可以帮助, 这个文档包括我用来在新的Ubuntu机器上安装东西的脚本。 一些命令在包文档中明确说明; 有些人很少或没有文件,需要研究。

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

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

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

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

次要问题:在Travis上安装

用户友好的travis配置文件显然直接安装了很多二进制文件(包括gsl ),这与当前的ggstatsplot版本不同

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

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

跟进 2018-03-13 Indrajeet,我调整了travis文件,以便它正常工作。 在yaml文件中更改两个部分

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM