【发布时间】:2022-08-03 06:24:23
【问题描述】:
我正在创建自己的包并使用 devtools 来记录和检查包。我运行 devtools::check() 大约 50% 的时间都以这个错误结束:
❯ checking whether package \'snafun\' can be installed ... ERROR See below...
── Install failure ─────────────────────────────────────────────────────────────────────────────────────────────────
install options \'--no-html --no-multiarch
然而,这只会发生大约一半的时间。有时它不会,有时它会。我可以连续运行 devtools::check 多次(无需对代码或中间的会话进行任何更改)并在一半的运行中出现此错误,而在另一半则没有。有时,如果我在其他时间之间重新启动会话似乎会有所帮助,这没有任何区别。
我曾尝试使用 devtools::check 的参数,但这似乎不会影响错误(这可能与这是一个“安装失败”和 devtools::check 没有安装参数有关)。
我很困惑。我有以下问题:
- 这个错误是什么意思?有问题吗?
- 什么可以让它看似随机地出现和消失?
- 解决这个问题的方向是什么?
ps这个包很大,所以我不能把它变成一个reprex
-
你应该缩小问题的范围。它是否仅在您使用
devtools::check()时发生,还是与R CMD check一起发生?既然是安装问题,那R CMD INSTALL呢?更多在下一条评论... -
计算机代码有很多方法是非确定性的。您可能在其中一个 .R 文件中使用了随机数生成器,因此代码本身是随机的。 (您可能知道这一点,但也许您没有意识到源文件中的代码是在安装时运行的。)或者您可能有一些写得很糟糕的代码引用了未初始化的变量,并且它正在查看内存中那个位置发生的任何值;这似乎是随机的。多一个...
-
回到第一条评论:缩小范围是必不可少的。一旦你有了半定期生成问题的最小过程,就开始从你的包中取出东西,直到你有一个仍然会生成它的最小包。也许那会足够小,你能够把它贴在这里。与此同时,我投票结束,因为我们没有任何事情要做。
-
比你,有道理。但是,这个错误有什么具体的吗?知道何时触发此特定错误会有所帮助,因此我有一个可以缩小范围的方向。换句话说,devtools::check 报告安装选项 \'--no-html --no-multiarch\' 错误必须是什么?