我有一些R代码,我想与办公室里的其他人分享,也可以在我们的服务器上定期运行。我们都有Windows 7桌面,服务器运行Red Hat Enterprise Linux。
我一直在浏览文档,而且我被困住了。以下所有内容都没有完成所有必要步骤,详细说明正确的文件夹结构,或者告诉我如何构建Linux软件包,或者在Linux上构建Windows软件包。
所以我的代码在git中。
$ mkdir ~/daveStuff
$ cd ~/daveStuff
$ git init
$ git remote add origin git@davez0r.co:/opt/git/daveStuff.git
$ git pull origin master
现在在我的主目录中,我有这个文件夹结构:
daveStuff
|-- DESCRIPTION
|-- R
|-- stuff.R
|-- exec
|-- script.R
我的描述文件如下所示:
Package: daveStuff
Type: Package
Title: What the package does (short line)
Version: 1.0
Date: 2014-02-03
Author: Who wrote it
Maintainer: Who to complain to <yourfault@somewhere.net>
Description: More about what it does (maybe more than one line)
License: What license is it under?
我在我的一台服务器上运行apache。所以我补充说:
/var/www/html/R/src/contrib/3.0/
这正确地映射到以下内容,在那里我读了我放在那里的任何文件:
http://davez0r.co/R/src/contrib/3.0/
我希望能够做到以下几点,无论是Windows还是Linux:
> install.packages("daveStuff", repos="http://davez0r.co/R", type="source")
> library(daveStuff)
所以第一步是我需要将我的库变成一个包。
$ cd ~ # one under the "daveStuff" directory
$ R CMD build daveStuff
这会创建一个zip文件:
~/daveStuff_1.0.tar.gz
现在我将该文件复制到我的存储库位置:
$ cp ~/daveStuff_1.0.tar.gz /var/www/html/R/src/contrib/3.0/
现在如果我这样:
> install.packages("daveStuff", repos="http://davez0r.co/R", type="source")
Warning in install.packages :
unable to access index for repository http://davez0r.co/R/src/contrib
它给了我一条错误消息,说它无法找到包。所以我创建了一个包清单:
$ cd /var/www/html/R/src/contrib # one under where I put the archive
$ Rscript -e 'tools::write_PACKAGES(".", type="source", subdirs=TRUE)'
这给了我一个PACKAGES
文件:
Package: daveStuff
Version: 1.0
MD5sum: 817bbfedeb218ce0331dd7108408c5e6
NeedsCompilation: no
Path: ./3.0
现在,当我尝试加载它时,它会起作用:
> install.packages("daveStuff", repos="http://davez0r.co/R", type="source")
未解决的问题:
exec
目录中的脚本。
source
套餐吗?
答案 0 :(得分:3)
在我看来,你跳过了最后一步。
一个人需要
我通过一个简单的脚本在类似的设置(一些Windows,许多Linux)上工作:
#!/bin/bash
## see e.g.
## http://cran.r-project.org/doc/manuals/R-admin.html\
## #Setting-up-a-package-repository
## http://stackoverflow.com/questions/2905650/creating-a-local-cran-repository
ver=3.00
rsync -vu *tar.gz /SomeServer/R/src/contrib/
rsync -vu *zip /SomeServer/R/bin/windows/contrib/${ver}/
cd /SomeServer/R/src/contrib/
r -e 'tools::write_PACKAGES(".", type="source")'
cd /SomeServer/R/bin/windows/contrib/${ver}/
r -e 'tools::write_PACKAGES(".", type="win.binary")'
我在这里使用littler's r二进制文件,你也可以使用Rscript。