2010-12-01 77 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