R CMD 检查 完整的检查需要“checkbashisms”脚本

R CMD check A complete check needs the 'checkbashisms' script

提问人:JeremyC 提问时间:9/22/2023 更新时间:9/23/2023 访问量:47

问:

我正处于使用 RStudio 编写包的早期阶段。基本的包结构是使用 William Landau 的包创建的。 当我单击该按钮时,一切似乎都很顺利,但我收到两个警告,其中一个完整显示:instantiateCheck

正在检查顶级文件...警告 完整检查需要 “checkbashisms”脚本。请参阅“配置和清理”部分 “编写 R 扩展”手册。

(另一个警告完全是关于其他事情的)。

我看过这个答案:[https://stackoverflow.com/questions/63698128/r-package-check-warning-a-complete-check-needs-the-checkbashisms-script] 但仍然不明白该怎么办。我不知道是什么,也不知道如何向它添加一些东西。$PATH

我也看到了这个答案: [ https://stat.ethz.ch/pipermail/r-package-devel/2020q3/005877.html][1]

结果,我添加到我的文件中,但这没有效果。_R_CHECK_BASHISMS_ = FALSE.Renviron

我必须做些什么才能删除此警告?

R RStudio 警告

评论

1赞 r2evans 9/22/2023
我不熟悉 Will 的包,也不熟悉你的包,但我猜这个警告是因为它在你的包中发现了它认为是 shell 脚本的东西。该实用程序(本身是一个 shell 脚本)旨在防止有人犯脚本开头的错误,但实际上包含建议它应该以开头的 BASH 主义。如果您有 shell 脚本,但它们不打算成为软件包的一部分,则可以考虑使用 .instantiate/bin/shcheckbashisms#!/bin/sh#!/bin/bash./.Rbuildignore
1赞 user2554330 9/22/2023
@r2evans:如果包有或脚本,则需要。checkbashismsconfigurecleanup
1赞 user2554330 9/22/2023
Jeremy,如果您从包中删除 and/或脚本,则不会收到该警告。但你可能需要它们。如果不查看您的包裹中的内容,我们就无法判断。configurecleanup
0赞 r2evans 9/23/2023
谢谢@user2554330,我以前没有在我的包中有这些脚本,上下文很好
0赞 JeremyC 9/23/2023
我也要感谢,@user2554330。我发现它既包括 and 脚本,也包括 and 脚本。它们的唯一功能似乎是在我的包无法编译或清理 Stan 模型时给出错误消息。我会尝试删除它们,看看会发生什么。如果你把你的评论变成答案,我会接受的。instantiateconfigurecleanupconfigure.wincleanup.win

答:

0赞 user2554330 9/23/2023 #1

R 检查代码希望在不依赖 shell 的情况下编写 and 脚本,因为它并非在可能安装包的所有系统上都可用。configurecleanupbash

它使用一个脚本来查看这些文件,以确认它们是否可移植编写。但是,它不包含在 R 中,它假定在系统上可用。因此,如果您有 or 脚本,您会收到您看到的警告,但 R 找不到 .checkbashismscheckbashismsconfigurecleanupcheckbashisms

这意味着有几种方法可以停止消息。您可以安装在 R 可以找到它的地方。它使用环境变量来搜索外部程序,因此您需要确保已安装在其中列出的目录之一中。(可以在 R 中看到该环境变量。checkbashismsPATHcheckbashismsSys.getenv("PATH")

另一种方法是确保你的包不包含 or 脚本。只有那些正在做复杂事情的包才需要这些,通常使用外部库。您在评论中提到自动生成的脚本正在寻找 Stan 模型。这可能意味着您需要这些脚本。configurecleanup

但是,除非您是在相当低的级别上编写的,否则您的软件包可能足以依赖于另一个使用 Stan 的软件包,例如 .然后,如果找不到 Stan,则其他包将无法加载,您的包也将无法加载。然后,您可以删除,并且不需要安装。RStanconfigurecleanupcheckbashisms

您也可以忽略该消息。CRAN 将已安装,因此他们不会收到该消息,也不会因此而阻止您的包。checkbashisms

评论

0赞 JeremyC 9/26/2023
我从包的作者那里听到了。他说:“{instantiate} 的机制依赖于配置和清理脚本,这意味着如果你在本地检查包,警告是不可避免的。但你可以忽略这个警告,因为 CRAN 安装了 checkbashisms。instantiate