在CRAN上发布一个依赖于" RGtk2"的r-package;和外部图书馆

时间:2016-10-18 13:30:17

标签: r travis-ci r-package

我目前正在CRAN上发布这个GITHUB包:

https://github.com/lbusett/MODIStsp    ,但我遇到了一些问题,希望有人能帮我克服! (很抱歉这条信息很长,但问题很难简单解释。我希望你能愿意读到最后......

我从使用包gWidgetsRGtk2创建GUI这一事实中得出的问题。但是,gWidgetsRGtk2依赖于包RGtk2,它本身需要一些外部库才能工作。这导致了CRAN发布的以下问题:

在Windows上

如果我将gWidgetsRGtk2保留在我的包的依赖项列表中,那么在RStudio中检查它会很顺利。我没有NOTES和WARNINGS(假设我安装了所有依赖项)。

  

R CMD检查结果0错误| 0警告| 0注释R CMD检查   成功

build_win也没有问题

但是,如果我尝试从github 安装软件包,即使我的库中已安装gWidgetsRGtk2安装也会失败。所以,例如:

devtools::install_github("lbusett/MODIStsp", ref = 'feature/cran_rel_candidate')

总是给我以下错误:

  

警告:无法加载RGtk2动态库,尝试安装   它。请从中安装GTK +   http://ftp.gnome.org/pub/gnome/binaries/win64/gtk+/2.22/gtk+-bundle_2.22.1-20101229_win64.zip   如果包仍未加载,请确保GTK +   安装并且它在您的PATH环境变量IN ANY中   案例,重新启动R之前尝试再次加载包装错误   inDL(x,as.logical(local),as.logical(now),...):无法加载   共享对象   ' C:/Users/lb/Documents/R/win-library/3.3/RGtk2/libs/x64/RGtk2.dll' ;:   LoadLibrary失败:无法找到.....

,我得到一个信息窗口,告诉我" libaptk-1.0-0.dll""不见了。按"确定"在消息向我发送无限循环尝试安装RGTk2 ,我必须强行关闭RStudio。

我设法正确安装软件包的唯一方法是:

  1. 从我的包中删除gWidgetsRGtk2依赖关系;
  2. 要求用户事先安装gWidgetsRGtk2并至少加载一次。 (在这种情况下,在" libaptk-1.0-0.dll缺失"消息之后,此信息面板打开,允许我安装GTK +库)
  3. enter image description here

    所以,例如,这个:

    install.packages("gWidgetsRGtk2")
    library("gWidgetsRGtk2")
    install_github("lbusett/MODIStsp", ref = 'devel')   # In devel, 'gWidgetsRGtk2'is not a dependency
    

    没有任何问题。

    要求用户事先安装有问题的软件包没什么大不了的,但我不知道CRAN软件包是否可以接受,这也是因为在删除依赖项后检查软件包给了我以下警告:

      

    检查R代码中的依赖关系......警告' loadNamespace'要么   ' requireNamespace'来电未声明:'gWidgetsRGtk2'R CMD check   结果0错误| 1警告| 0注释

         

    R CMD检查成功

    所以,最后我的问题是:你知道是否有办法解决这个问题,或者我应该如何在发布CRAN的过程中处理它?<​​/ strong>

    在Linux上

    在Linux上,问题是相关的,但有点不同。

    1. 首先,包装&#34; RGTk2&#34;需要预先安装一些外部库(Cairo> = 1.0.0,ATK&gt; = 1.10.0,Pango&gt; = 1.10.0,GTK +&gt; = 2.8.0,GLib&gt; = 2.8.0)。另外,我需要&#34; gdal&#34;安装了hdf4支持。
    2. 设置以下YAML文件允许我通过TRAVIS-CI(https://travis-ci.org/lbusett/MODIStsp/builds/168603035)的检查:

      language: r
      cache: packages
      warnings_are_errors: false
      matrix:
        include:
          - os: linux
            dist: trusty
            sudo: required
            env:
            global:
              - R_BUILD_ARGS=" "
              - R_CHECK_ARGS="--no-build-vignettes --no-manual --timings"
              - R_CHECK_TIMINGS_="0"
              - BOOTSTRAP_LATEX="1"    
        addons:
          apt:
            packages:
              - libgdal-dev
              - libproj-dev
              - libcurl4-openssl-dev
              - libgtk-3-dev
        r_binary_packages:
          - cairoDevice
          - RGtk2
      

      我不知道 if / how / where我应该为CRAN提交指定这些依赖项。任何人都可以向我解释/给我一些参考吗?

        

      安装包'gWidgetsRGtk2'...包   'gWidgetsRGtk2'成功解压缩并且MD5总和检查了R inst   测试准备延迟装载包R会议无头; GTK +   没有初始化。 (R:15669):Gtk-WARNING **:gtk_disable_setlocale()   必须在gtk_init()之前调用错误:.onLoad失败   loadNamespace()用于&#39; cairoDevice&#39;,详情:

           

      call:fun(libname,pkgname)错误:找不到GDK显示 - 请   确保X11正在运行错误:包'cairoDevice'不能   加载错误:包'gWidgetsRGtk2'

      的延迟加载失败      

      删除'/ home / travis / R / Library / gWidgetsRGtk2'

           

      错误:命令失败(1)

           

      执行暂停

           

      命令&#34; Rscript -e&#39; deps&lt; -   devtools :: dev_package_deps(dependencies =   NA); devtools :: install_deps(dependencies = TRUE); if(!all(deps $ package。)   %in%installed.packages())){message(&#34; missing:&#34;,   paste(setdiff(deps $ package,installed.packages()),collapse =&#34;,&#34;));   q(状态= 1,保存=&#34;否&#34;)}&#39;&#34;失败并在1期间退出。

      与在Windows情况下一样,如果我删除gWidgetsRGtk2依赖项,问题就会消失,但之后我会在构建/安装中获得警告。

      所以,在这种情况下:有谁知道如何解决这个问题?

      提前感谢您的帮助! (感谢阅读!)

      洛伦佐

0 个答案:

没有答案