抱歉,但我不确定这里是否是报告问题的正确地方,因为它涉及三个系统的融合,其中只有一个是 Ubuntu。我首先尝试了其他两个组件(GitHub Actions和R 包future
)的帮助论坛,但无法继续前进,所以我才来到这里。如果有更合适的论坛,请重定向我。
我在ale/.github/workflows/R-CMD-check.yaml at main · tripartio/ale 上为我的软件包创建了一个 R-CMD-CHECK Github Actions 工作流。该操作针对 MacOS、Windows 和三个版本的 Ubuntu 验证了我的软件包。目前除了 之外ubuntu-latest (devel)
,其他一切都通过了, 因与并行处理框架相关的问题而失败future
。值得注意的是,和服务器毫无问题地通过了测试(MacOS 和 Windows 也是如此);问题只出在 上。ubuntu-latest (release)
ubuntu-latest (oldrel-1)
ubuntu-latest (devel)
以下是最近一次失败运行的相关部分:R-CMD-CHECK:
── R CMD build ─────────────────────────────────────────────────────────────────
* checking for file ‘.../DESCRIPTION’ ... OK
* preparing ‘ale’:
* checking DESCRIPTION meta-information ... OK
* installing the package to build vignettes
* creating vignettes ... ERROR
Error: --- re-building ‘ale-intro.Rmd’ using rmarkdown
--- finished re-building ‘ale-intro.Rmd’
--- re-building ‘ale-small-datasets.Rmd’ using rmarkdown
Quitting from lines 95-104 [lm_simple] (ale-small-datasets.Rmd)
Error: Error: processing vignette 'ale-small-datasets.Rmd' failed with diagnostics:
The total size of the 56 globals exported for future expression ('function (it.x_cols); {; if (!silent && is.null(bins)) {; progress_iterator(); }; ale_results <- list_transpose(calc_ale(data, model, it.x_cols,; ...; it.rtn; })); }') is 1.85 GiB.. This exceeds the maximum allowed size of 500.00 MiB (option 'future.globals.maxSize'). The three largest globals are 'abort' (99.45 MiB of class 'function'), 'action_dots' (99.42 MiB of class 'function') and 'as_label' (99.42 MiB of class 'function')
--- failed re-building ‘ale-small-datasets.Rmd’
--- re-building ‘ale-statistics.Rmd’ using rmarkdown
--- finished re-building ‘ale-statistics.Rmd’
--- re-building ‘ale-x-datatypes.Rmd’ using rmarkdown
Quitting from lines 123-134 [cars_full] (ale-x-datatypes.Rmd)
Error: Error: processing vignette 'ale-x-datatypes.Rmd' failed with diagnostics:
The total size of the 129 globals exported for future expression ('function (btit, btit.idxs); {; if (!silent) {; progress_iterator(); }; btit.model <- NULL; ...; else {; NULL; }') is 4.01 GiB.. This exceeds the maximum allowed size of 500.00 MiB (option 'future.globals.maxSize'). The three largest globals are 'abort' (83.31 MiB of class 'function'), 'abort_context' (83.30 MiB of class 'function') and 'trace_back' (83.29 MiB of class 'function')
--- failed re-building ‘ale-x-datatypes.Rmd’
SUMMARY: processing the following files failed:
‘ale-small-datasets.Rmd’ ‘ale-x-datatypes.Rmd’
Error: Error: Vignette re-building failed.
Execution halted
Error: Error in proc$get_built_file() : Build process failed
Calls: <Anonymous> ... build_package -> with_envvar -> force -> <Anonymous>
Execution halted
Error: Process completed with exit code 1.
Run ## --------------------------------------------------------------------
Show testthat output
Run actions/upload-artifact@v4
Warning: No files were found with the provided path: /home/runner/work/ale/ale/check. No artifacts will be uploaded.
Run actions/upload-artifact@v4
No files were found with the provided path: /home/runner/work/ale/ale/check/**/tests*/testthat/_snaps. No artifacts will be uploaded.
我尝试了Posit 社区 GitHub Actions 线程中我提交的 bug 报告中的几个方法,但收到并尝试的几个建议并没有帮助。根据我未来软件包 GitHub 问题中 bug 报告中的提示,我可以确认问题不是软件包本身的配置错误,而是严格与GitHub 操作调用的服务器future
隔离。ubuntu-latest (devel)
上面日志中指定的导出对象的数量并不罕见,但我发现非常奇怪的是列出的前三个函数的大小非常大:
- “三个最大的全局变量是‘abort’(‘function’ 类的 99.45 MiB)、‘action_dots’(‘function’ 类的 99.42 MiB)和‘as_label’(‘function’ 类的 99.41 MiB)”
- “三个最大的全局变量是‘abort’(‘function’ 类的 83.31 MiB)、‘abort_context’(‘function’ 类的 83.30 MiB)和‘trace_back’(‘function’ 类的 83.29 MiB)”。
据我所知,这些都是rlang
函数;我不知道它们为什么会这么大。据我从上面的构建日志中得知,服务器似乎ubuntu-latest (devel)
认为 {future} 并行化包没有为我的包测试中的对象分配足够的空间。其他构建(包括其他两个 Ubuntu 构建)均未报告此错误。
在我看来,出于某种原因,{future} 安装ubuntu-latest (devel)
严重高估了软件包的存储需求,而这在早期版本的 Ubuntu 上不是问题。也许某个地方有内存泄漏?如果ubuntu-latest (devel)
代表即将发布的 Ubuntu,那么在发布 Ubuntu 版本之前,应该先调查并解决此问题。
我知道这是一个关于特定系统的非常具体的问题,但如果有人至少能告诉我谁在维护R-CMD-CHECK GitHub Action,那将是一个很好的提示。正如我在开头提到的,我首先在他们的论坛上发帖,但未能在那里得到必要的帮助。
计算机漏洞的消亡之地
我首先承认,我是在 VB6 转换为 .NET 时开始编程的,在 .NET 中,你可以使用该公司支持的任何语言,无论是喜欢还是讨厌,然后将程序通过中间编译器发送,最终得到相同的机器语言代码。当时的情况大不相同,因为微软处理错误的方法是自上而下的,有点笨拙。正是这种“处理笨拙的自上而下的混乱”让我首先进入了 Linux 生态系统。该生态系统的一部分是错误报告系统。一些例子:
Linux 用户可能会争论他们喜欢哪个发行版或哪个最适合他们的需求,但正如上面的链接所示,每个发行版都坚信自下而上的方法来解决项目问题。当Linux 内核从 CVS 移至Github时,这种方法再次得到加强。
这与 OP 的问题有什么关系?
自下而上的软件管理方法现已成为主流,因为程序员和非程序员都可以通过整个 GitHub 自由浏览源代码和报告错误(现在称为问题)。虽然我不使用 R,但我打算阅读这本书,在偶然发现这个问题后,
actions
OP 遇到了麻烦,他们有自己的Github 存储库,而 OP 正确地找到了它。由于这些操作的开发不再属于一个贡献者,如贡献者页面所示,因此 OP 的问题应在相应的问题页面上报告。将其发布在那里将允许 88 位当前贡献者直接评论和与 OP 交流,其中一些贡献者对操作的构建方式有非常精确的理解。这种直接沟通是必要的,因为:R Actions
问题或者是 的问题Ubuntu (current)
。根据 @eyoung100 关于在何处发布请求的建议,我最终使用来自r-lib/actions 的指针解决了这个问题:我注释掉了
R_KEEP_PKG_SOURCE=yes
GitHub Actions YAML 文件中的该行,确实解决了这个问题。ubuntu-latest (devel)
最终运行正确。