10

我在构建以下软件包时遇到了问题:https ://github.com/yoni/rbundler

我的测试尝试bundle在具有单个依赖项的普通包上运行 rbundler 的命令。测试在我的 OSX 机器上通过,但在我的 x86_64-redhat-linux-gnu Jenkins 服务器上失败。两台机器都运行带有 0.7.1 的 R 2.15.1 devtools,其中包括此错误修复

完整的测试输出可以在这个 gist中找到。

这是我看到的错误的简短摘要:

Error in file(filename, "r", encoding = encoding) : 
  cannot open the connection
Calls: local ... eval.parent -> eval -> eval -> eval -> eval -> source -> file
In addition: Warning message:
In file(filename, "r", encoding = encoding) :
  cannot open file 'startup.Rs': No such file or directory
Execution halted

这样做的背景是我正在尝试为 R 构建一个依赖管理系统。这个想法是一个 R 项目应该能够在不使用系统范围或用户范围的库的情况下运行。相反,R 项目将在其根目录下安装自己的库。

对于我之前与 R 中的依赖管理相关的 Stack Overflow 问题,请参阅 R 中的依赖管理

4

2 回答 2

6

在我的情况下,这个问题是由R_TESTS设置为的环境变量引起的startup.Rs

当您从测试中执行另一个 R 进程时(在我的情况下,它是通过 OGS qsub 提交的),此环境变量的存在会导致问题。

于 2015-01-16T23:15:25.553 回答
0

我无法直接回答您的问题,但您可以尝试两件事来获取有关正在发生的事情的更多信息。

  1. 使用 'env' 在你的 OSX 机器和 Jenkins 主机上转储环境变量
  2. 通过 Linux 上的 strace 和 OSX 上的 dtruss 运行该进程以捕获系统调用

strace/dtruss 应该显示它正在搜索启动的位置。Rs 和 env 输出可能会为您提供一个环境变量,该变量在系统之间会有所不同,从而导致不同的结果。

于 2012-09-13T17:58:44.177 回答