2010-12-01 52 views
5

我无法在Windows上为R构建虚拟测试包。 用于测试目的,在R端子,我输入:为Windows编译R-pkakge -ERROR:编译包xxx失败

a=rnorm(10) 
package.skeleton("pkgtest") 

然后我运行该虚拟包R CMD check pkgtest并得到了错误,如

* using R version 2.12.0 (2010-10-15) 
* using platform: i386-pc-mingw32 (32-bit) 
* using session charset: ISO8859-1 
* checking for file 'pkgtest/DESCRIPTION' ... OK 
* checking extension type ... Package 
* this is package 'pkgtest' version '1.0' 
* checking package dependencies ... OK 
* checking if this is a source package ... OK 
* checking for executable files ... OK 
* checking whether package 'pkgtest' can be installed ... ERROR Installation failed. 

编辑,完整的日志文件:

* installing *source* package 'pkgtest' ... 
** libs 
cygwin warning: 
    MS-DOS style path detected: C:/R/R-212~1.0/etc/i386/Makeconf 
    Preferred POSIX equivalent is: /cygdrive/c/R/R-212~1.0/etc/i386/Makeconf 
    CYGWIN environment variable option "nodosfilewarning" turns off this warning. 
    Consult the user's guide for more details about POSIX paths: 
    http://cygwin.com/cygwin-ug-net/using.html#using-pathnames 
ERROR: compilation failed for package 'pkgtest' 
`* removing 'C:/DOCUME~1/xxxx'` 

就是这样。我在数据文件夹中有一个数据a,所以它不是空的。 Rd文件实际上可以编译成pdf格式,编号为Rcmd rd2pdf,其标题不为空。

我是否错过了这个错误非常基本的东西?我安装了Rtools2.12。我甚至有包inlineRcpp安装和运行的例子很好。 为了测试我的R环境设置,我下载了Rcpp源码包并在Rcpp上做了R cmd check,它没有问题。

+0

Do R Core是否支持在cygwin下编译?我认为R for Windows需要mingw? – 2010-12-01 22:28:16

+0

我不明白为什么有人把这个问题投下来-1。所以我把它重新回到0.这是一个有效的问题,包括示例代码,细节等。 – Choens 2010-12-03 00:23:25

回答

3

是的,很多,如果你所做的只是以上记录的步骤。

首先,你有没有做到从package.skeleton输出要求你?:

> a=rnorm(10) 
> package.skeleton("pkgtest") 
Creating directories ... 
Creating DESCRIPTION ... 
Creating Read-and-delete-me ... 
Saving functions and data ... 
Making help files ... 
Done. 
Further steps are described in './pkgtest/Read-and-delete-me'. 

特别是最后一道防线。

你不引用全面检查日志,我得到:

$ R CMD check pkgtest 
* checking for working pdflatex ... OK 
* using log directory '/home/gavin/tmp/pkgtest.Rcheck' 
* using R version 2.11.1 Patched (2010-08-17 r52767) 
* using session charset: UTF-8 
* checking for file 'pkgtest/DESCRIPTION' ... OK 
* checking extension type ... Package 
* this is package 'pkgtest' version '1.0' 
* checking package dependencies ... OK 
* checking if this is a source package ... OK 
* checking for executable files ... OK 
* checking whether package 'pkgtest' can be installed ... ERROR 
Installation failed. 
See '/home/gavin/tmp/pkgtest.Rcheck/00install.out' for details. 

所以,你应该去检查.out文件它提到的内容。我在该文件中有以下内容:

$ cat /home/gavin/tmp/pkgtest.Rcheck/00install.out 
* install options are ' --no-html' 

* installing *source* package ‘pkgtest’ ... 
** R 
** data 
** preparing package for lazy loading 
** help 
Warning: ./man/pkgtest-package.Rd:34: All text must be in a section 
Warning: ./man/pkgtest-package.Rd:35: All text must be in a section 
*** installing help indices 
Error in Rd_info(db[[i]]) : 
    Rd files must have a non-empty \title. 
See chapter 'Writing R documentation' in manual 'Writing R Extensions'. 
* removing ‘/home/gavin/tmp/pkgtest.Rcheck/pkgtest’ 

一旦您查看软件包源代码,这一点是不言自明的。

您至少需要:

> a=rnorm(10) 
> package.skeleton(name = "pkgtest", list = "a") 

然后你要注意,你必须编辑的Rd文件。这是一个设计功能prompt()package.skeleton()不会创建有效的Rd文件来让包作者编写它们包的最小文档。

1

您需要查看下一行中未列出的文件中的错误。

当我尝试追溯你的脚步,我也得到一个错误:

/tmp/pkgtest$ r -e 'package.skeleton("pkgtest")' 
Creating directories ... 
Creating DESCRIPTION ... 
Creating Read-and-delete-me ... 
Saving functions and data ... 
Making help files ... 
Done. 
Further steps are described in './pkgtest/Read-and-delete-me'. 
/tmp/pkgtest$ R CMD INSTALL pkgtest/ 
* installing to library ‘/usr/local/lib/R/site-library’ 
* installing *source* package ‘pkgtest’ ... 
** data 
** help 
Warning: /tmp/pkgtest/pkgtest/man/pkgtest-package.Rd:33: \ 
     All text must be in a section 
*** installing help indices 
Error in Rd_info(db[[i]]) : 
    Rd files must have a non-empty \title. 
See chapter 'Writing R documentation' in manual 'Writing R Extensions'. 
* removing ‘/usr/local/lib/R/site-library/pkgtest’ 
/tmp/pkgtest$ 

package.skeleton()是有意义的,你需要给它一个或多个功能,数据对象,...你做不。

+0

谢谢德克。我没有Rd_info日志消息,但它似乎是原因。 – learnrpackage 2010-12-01 18:31:12