Ind*_*til 7 r gsl travis-ci r-package
我正面临着R包装开发的一个特别棘手的问题.我自己的程序包ggstatsplot(https://github.com/IndrajeetPatil/ggstatsplot)依赖于userfriendlyscience,这取决于另一个被调用的程序包MBESS,它本身最终依赖于另一个名为的程序包gsl.在Windows机器ggstatsplot上安装没有任何问题(通过持续集成平台评估:https://ci.appveyor.com/project/IndrajeetPatil/ggstatsplot).AppVeyor
但每当包被上安装的Unix机器,它抛出的错误ggstatsplot,不能因为下载userfriendlyscience而MBESS不能下载,因为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库(例如,通过apt或dnf/yum),这可能是一些安慰.
尝试在GitHub自述文件和CRAN INSTALL文件中超级清楚.gsl包具有不错的CRAN方向.这导致以下bash代码:
sudo apt-get install libgsl0-dev
Run Code Online (Sandbox Code Playgroud)
我见过的clear(linux pre-req包)文档的最好例子来自curl和sf包. sf的CRAN页面仅列出了3个库的人的名字,但GitHub的页面提供了三个主要经销分公司确切的bash命令.卷曲包也很好地完成了这一点(例如,CRAN和GitHub).例如,它提供以下说明和bash代码:
在Linux上从源代码安装需要
libcurl.在Debian或Ubuntu上使用libcurl4-openssl-dev:
sudo apt-get install -y libcurl-dev
Run Code Online (Sandbox Code Playgroud)
理想情况下,您的文档将描述如何在多个发行版上安装gsl linux软件包.
免责声明:我从未开发过直接需要Linux软件包的软件包,但我经常使用它们.如果有更多的例子可以帮助,这个文档包括我用来在新的Ubuntu机器上安装东西的脚本.一些命令在包文档中明确说明; 有些人很少或没有文件,需要研究.
编辑2018-04-07:我遇到了我最喜欢的新例子:sys包使用配置文件在R控制台中生成以下消息.在新计算机上安装100多个软件包时,很高兴看到这个直接消息,而不必追踪R软件包及其依赖项的文档.
在Debian/Ubuntu上,这个包需要AppArmor.
请运行:sudo apt-get install libapparmor-dev
另一个好的是pdftools,它也使用配置文件(也由Jeroen Ooms开发).
用户友好的travis配置文件显然直接安装了很多二进制文件(包括gsl),这与当前的ggstatsplot版本不同.
或者,我更熟悉告诉travis安装linux软件包,如curl的配置文件所示.作为奖励,这可能更接近复制典型用户在自己的机器上所做的事情.
addons:
apt:
packages:
- libcurl4-openssl-dev
Run Code Online (Sandbox Code Playgroud)
跟进 2018-03-13 Indrajeet,我调整了travis文件,以便它正常工作. 在yaml文件中更改了两个部分:
libgsl0-dev条目添加在该packages部分下(类似于上面的libcurl4-openssl-dev条目).r_binary_packages部分中,因此它们作为二进制文件安装.构建在50分钟后超时,现在不到10分钟.在这个特定的包中,该r_binary_packages部分嵌套在Travis矩阵的Linux部分中,因此它不会干扰他在Travis上的两个OS X作业.| 归档时间: |
|
| 查看次数: |
783 次 |
| 最近记录: |