自动为自制包安装依赖库

时间:2016-08-03 00:26:32

标签: r r-package

我有一个关于如何在从源代码安装自制软件包时自动安装依赖库的问题。

基本上,DESCRIPTION文件如下:

Package: mypackage
Type: Package
Title: mypackage_title
Version: 0.1.0
Author: test 
Maintainer: test <test @example.com>
Description: More about what it does (maybe more than one line)
Depends:
    dplyr, 
    stringr
License: MIT
LazyData: TRUE
RoxygenNote: 5.0.1

我关注了guide并创建了一个.tar.gz文件。当我分发此包时,用户将从源安装。此外,我期望从这个源安装中,如果这两个库不可用,将自动安装dplyrstringr等依赖库。

我在虚拟机中测试但遇到以下错误。那么关于这个问题的任何建议?提前谢谢!

install.packages("path_to_my_tar.gz", repos=NULL, type="source")
Error: dependencies 'dplyr', 'stringr' are not available for package

更新:我尝试了其他几种方法,但仍然失败了......

方法1

install.packages("path/to/my/package", repos = NULL, type = "source")
ERROR: dependencies 'dplyr', 'stringr' are not available for package 

方法2:将my packagedplyrstringr放入path/to/my/package/folder

install.packages("path/to/my/package", repos =  "path/to/my/package/folder/", type = "source")
Warning in install.packages :
  unable to access index for repository path/to/my/package/folder/src/contrib:
  scheme not supported in URL 'path/to/my/package/folder/src/contrib/PACKAGES'
Warning in install.packages :
  my packageis not available (for R version 3.3.1)

方法3:使用my package

dplyrstringrpath/to/my/package/folder放入contriburl
install.packages("path/to/my/package", contriburl = "path/to/my/package/folder/", type = "source")
Installing package into my package (as lib?is unspecified)
Warning in install.packages :
  unable to access index for repository path/to/my/package/folder/:
  scheme not supported in URL 'path/to/my/package/folder/PACKAGES'
Warning in install.packages :
  my package is not available (for R version 3.3.1)

方法4:

  

install.packages(“ProdComp08032016_0.1.2.tar.gz”,repos = c(“file:// C:/ Users / TH2 / Downloads /”,“http://cran.us.r-project.org”),type =“source “)   将软件包安装到:/Users/TH2/Documents/R/win-library/3.3?(因为ib?未指定)   install.packages中的警告:     无法打开压缩文件'// C:/ Users / TH2 / Downloads / src / contrib / PACKAGES',可能的原因'没有这样的文件或目录'   install.packages出错:无法打开连接

方法5:

  

install.packages(“ProdComp08032016_0.1.2.tar.gz”,repos = c(“C:/ Users / TH2 / Downloads /”,“http://cran.us.r-project.org”),type =“source”)   将软件包安装到:/Users/TH2/Documents/R/win-library/3.3?(因为ib?未指定)   install.packages中的警告:     无法访问存储库C的索引:/ Users / TH2 / Downloads / src / contrib:     URL'C:/ Users / TH2 / Downloads / src / contrib / PACKAGES'不支持该方案   install.packages中的警告:     包rodComp08032016_0.1.2.tar.gz?不可用(对于R版本3.3.1)

2 个答案:

答案 0 :(得分:3)

修改

根据这个重复的问题,Package dependencies when installing from source in R,命令

install.packages(pkgs = my.package.name, repos = c("file://path/to/my/custom/repo", "http://cran.somepage.org"))
如果你create a local R repository

可以使用。

另一个选择是使包成为GIT项目并使用

devtools::install_local("path/to/package.tar.gz")

我没有准备好进行测试的软件包,但我的猜测是repos = NULL screw install.packages正在查找软件包的依赖项。

查看?install.packages看起来好运没有将依赖项放在本地存储库中:

  

参数

     

pkgs 当前版本的软件包名称的字符向量   应该从存​​储库下载。如果repos = NULL,a   包含二进制文件的'.zip'文件的文件路径的字符向量   包的构建。 (http://和file://也接受URL和   将从本地副本下载和安装文件。)来源   可以使用指定目录或文件路径或归档的URL   type =“source”,但有些软件包需要安装合适的工具(参见   '详情'部分)。如果缺少这个或零长度字符   向量,可用的包的列表框   一个互动的R会议   给出库的 lib 字符向量   目录安装包的位置。根据需要回收。如果   缺少,默认为.libPaths()的第一个元素   的回购   字符向量,要使用的存储库的基本URL,例如,   CRAN镜像的URL,例如“http://cran.us.r-project.org”。对于   有关支持的URL方案的更多详细信息,请参阅URL可以为NULL安装   来自本地文件,目录或URL:这将由推断   如果长度为1,则从pkgs扩展。

以下是我的两个猜测:

install.packages(pkgs = "package", ..., repos = c("file://path.to.tar.gz", "http://path.to.cran.mirror")) # Try to specify the path to your package as another repo
install.packages(pkgs = "file://path.to.tar.gz.file") # Leave repos alone and hope the file:// suffices

请让我知道它们是否有效:)

答案 1 :(得分:1)

没有保证,但也许

devtools::install_local("path_to_my_tar.gz")

如果这不起作用,请尝试使用dependencies=TRUE