如何绕过utils :: available.packages中的缓存?

时间:2015-08-03 15:47:24

标签: r caching repository

我正在维护一个可通过http获得的本地网络存储库。大多数软件包都是从CRAN中获取的,但是有一个软件包由我自己编写(称之为mypkg)。它正处于开发阶段,我不时发布版本,并且我想为每个版本自动更新回购。

我写了一个非常简单的脚本

  1. 通过http检查mypkg的可用版本(我使用miniCRAN::pkgAvail,但该作业实际上是由utils::available.packages完成的);
  2. 构建最新版本的mypkgdevtools::build);
  3. 如果它的'版本较新,将其推送到存储库;
  4. 运行write_PACKAGES;
  5. 最后,再次检查mypkg的可用版本,如果版本更新,我们会很好。
  6. 我正在测试脚本,除了最后一步,一切都很好。问题是(引用?available.packages的手册页,方括号中的插入),

      

    [...]如果[下载了软件包列表],则在tempdir()[...]

    中的每个存储库文件中为R会话缓存该列表

    所以我总是得到旧版本,尽管更新过程的其余部分顺利进行。

    我的问题是,如何清除提到的缓存?

    它似乎无法从available.packages控制,也许我错了?如果我是对的,你会如何实施第5步?也许重启会话(我将作为最后的手段尝试)?搜索临时目录并删除它?我必须非常简单,我没有看到。

1 个答案:

答案 0 :(得分:1)

我使用install.rupdate.r 很多从本地和远程repos安装。

我通过使用/tmp的{​​{3}}开车,所以我有时强行删除*.rds - 即使脚本本身也这样做了:

sapply(list.files(path=tempdir(), 
                  pattern="^(repos|libloc).*\\.rds$",
                  full.names=TRUE), 
       unlink)

此处我知道/查看临时目录还有其他好处。