在CRAN包中包含非CRAN包

时间:2015-10-25 21:32:17

标签: r package cran

问题很简单。第一:

  1. 是否可以在CRAN包中包含非CRAN(或bioconductor或omega hat)包,并在实例中实际使用该包中的工具。
  2. 如果是,如何设置ssh = paramiko.SSHClient() ssh.set_missing_host_key_policy( paramiko.AutoAddPolicy() ) ssh.connect(ip, username='root', password="password") chan = ssh.invoke_shell() while not chan.exit_status_ready() buff = '' while not buff.endswith('\x1b[2J'): resp = chan.recv(1) # tweak, bigger chunks, use select. buff += resp # buff hold data up to clear-screen # evaluate screen, send keystrokes to navigate chan.send('\x1b\r') # ESC 文件等以使其合法并通过CRAN检查?
  3. 具体来说,我问的是曾经是CRAN包的 openNLPmodels.en 。它非常有用,并希望包含它的功能。我可以在示例中进行解决而不是实际使用 openNLPmodels.en 或为其创建单元测试,并在函数使用时安装它(类似于性别 package安装它需要的数据集但是我更喜欢一种允许我运行检查,文本和示例的方法。

    这是下载并安装 openNLPmodels.en

    的方法
    DESCRIPTION

2 个答案:

答案 0 :(得分:1)

现有答案很好,但是没有详细解释整个过程,因此发布此答案。


是否可以在CRAN程序包中包含非CRAN(或生物导体或omega hat)程序包,并在示例中实际使用该程序包中的工具。

是的,有可能。像 Suggests 中的其他任何软件包一样,必须避免使用此类非CRAN的任何使用(软件包代码,示例,测试,小插图),最好使用

if (requireNamespace("non.cran.pkg", quietly=TRUE)) {
  non.cran.pkg::fun()
} else {
  cat("skipping functionality due to missing Suggested dependency")
}

如果是,如何设置说明文件等使其合法并通过CRAN检查?

您需要使用DESCRIPTION文件中的Additional_repositories字段。在该字段中提供的位置必须包含期望的目录结构,在适当目录中的PACKAGES文件,并且PACKAGES文件必须列出非CRAN软件包。


现在转到您的openNLPmodels.en软件包的特定示例。 根据下载和安装此软件包的方式,将无法将其用作依赖项并传递CRAN。 openNLPmodels.en必须以R存储库中预期的结构发布。否则,您将没有有效的位置可放入Additional_repositories字段中。

您可以做的是下载非CRAN程序包,然后将其发布到R存储库中,然后在CRAN程序包的Additional_repositories字段中使用该位置。 这是一个如何做的例子:

dir.create("src/contrib", recursive=TRUE)
download.file("http://datacube.wu.ac.at/src/contrib/openNLPmodels.en_1.5-1.tar.gz", "src/contrib/openNLPmodels.en_1.5-1.tar.gz")
tools::write_PACKAGES("src/contrib")

我们只是将软件包源放在期望的目录src/contrib中,其余的由write_PACKAGES函数很好地处理了。为了确保正确创建存储库,您可以列出该存储库中可用的软件包:

available.packages(repos=file.path("file:/",getwd()))

它应该在那里列出您的非CRAN软件包。 然后,在R存储库中发布非CRAN软件包,则应将存储库放置在CRAN软件包的Additional_repositories字段中。在这种情况下,位置将是file.path("file:/",getwd())表达式返回的位置。

请注意,它使用本地计算机上的位置,您可能希望将其置于联机状态,以便任何检查CRAN程序包的计算机都可以访问url,包括检查CRAN本身。为此,只需将您的src目录移动到将要在线托管的 public 目录中,并使用该服务器的位置即可。


现在再次查看您的非CRAN程序包,我们可以看到它的URL中有 src / contrib ,因此我们可以假定它已经存在正确的R存储库,而我们没有创建和发布新的。 因此,您的安装说明可能类似于

install.packages(
  "openNLPmodels.en", 
  repos="http://datacube.wu.ac.at",
  type="source"
)

然后,您的CRAN软件包所需的就是使用现有的可用存储库

Additional_repositories http://datacube.wu.ac.at

答案 1 :(得分:0)

可能,但是! ...

DESCRIPTION文件中有一个字段可供您使用:

Additional_repositories: http://ghrr.github.io/drat

但是!

一切取决于附加存储库中来自的功能 ,这些都是绝对可选的

因此,此仓库中的软件包应放在Suggests下。

Example

我不确定100%是否将BioConductor和OmegaHat视为主流。