我已经构建了一个Packrat项目,其中包含在Packrat私有库中安装的多个软件包。我想将代码与Packrat库一起带到另一个系统。我构建库的系统是从Rstudio运行R 3.2.2的Windows 7,我移动它的系统是从命令行运行R 3.1.2的Linux机器。 Windows机器上的packrat版本是0.4.6-1。以下是我采取的行动的概要:在我运行的Windows机器上
> packrat::bundle(include.lib=TRUE)
我获取了生成的捆绑包并将其移至Linux系统,然后使用tar -zxvf packrat_bundle.tar.gz
将其解压缩。然后我进入了新解压缩的目录并启动了R.从那里,packrat自动引导(由于放置在.Rprofile中的行source("packrat/init.R")
packrat)并给出了以下输出
Packrat is not installed in the local library -- attempting to bootstrap an installation...
> Installing packrat into project private library:
- '/home/code/packrat/lib/x86_64-unknown-linux-gnu/3.1.2'
* installing *source* package âpackratâ ...
** package âpackratâ successfully unpacked and MD5 sums checked
** R
** inst
** preparing package for lazy loading
** help
*** installing help indices
** building package indices
** testing if installed package can be loaded
* DONE (packrat)
> Attaching packrat
> Restoring library
Already up to date.
> Packrat bootstrap successfully completed. Entering packrat mode...
Updating system packages ('3.2.2' -> '3.1.2')
Packrat mode on. Using library in directory:
- "/home/code/packrat/lib"
Warning message:
In restore(restart = FALSE) :
The most recent snapshot was generated using R version 3.2.2
此后,.libPaths()
的输出为
> .libPaths()
[1] "/home/code/packrat/lib/x86_64-unknown-linux-gnu/3.1.2"
[2] "/home/code/packrat/lib-ext"
[3] "/home/code/packrat/lib-R"
问题是我在Windows机器上创建的库包含在目录/home/code/packrat/lib/x86_64-w64-mingw32/3.2.2
中。因此,我必须将其添加到.libPaths
以使packrat库正常工作。我不介意不得不手动更改.libPaths
,但我觉得我可能会做一些错误导致问题的事情。
感谢您的帮助!
答案 0 :(得分:1)
事实证明,我遇到的问题是在尝试将其移至另一个系统之前我没有snapshot
ted packrat。我首先运行packrat::snapshot()
然后像以前一样继续前进来解决了这个问题。
我误以为通过使用packrat::bundle(include.lib=TRUE)
我可以通过这种方式转移我的库。情况并非如此,特别是当需要将库移动到另一个系统并从源重建时。快照首先处理源重建,并正确启动packrat。
答案 1 :(得分:0)
我的答案与问题无关,但是我想在这里写,这样也许有人会读到,节省很多时间和沮丧。
此问题发布至今已有2年。一年前,我使用了packrat
软件包,直到今天我仍然发现它根本无法使用。我尝试安装dplyr
,安装BH软件包(依赖项)需要1个小时。
使用checkpoint
软件包更好。您必须指定1个功能
checkpoint("your_snapshot_date")
,您准备好共享您的代码作为可复制的示例。安装dplyr的时间:3分钟。