在R包的`inst/`中的可执行脚本

3

我正在编写一个 R 包(只供内部使用,永远不会提交到 CRAN)。其中一个函数调用了一个包含 node.js 命令的 shell 脚本。我已将文件放在 inst/node_script.sh 中,因此当安装该包时,可以通过下面的命令调用脚本:

system(system.file("./node_script.sh", package = "mypackage"))

在我的开发机上运行得很好。但是当我在测试机器上安装包时,node_script.sh 虽然放在了正确的位置,但它失去了可执行权限,所以我必须先使用 chmod +x ... 命令才能运行脚本。有三个问题:

  • 如何在安装过程中保持脚本文件的文件权限?
  • 是否有一种干净的方法来设置它们?我正在使用 devtools::install_github
  • 这是最好的方式吗?
2个回答

2

您可以尝试使用 清理脚本 来解决问题,然后在安装时使用 --clean 参数,例如:devtools::install_github("foo/bar",args=c("--clean"))

如果您的 /tmp 目录像我一样设置了 noexec 标志,那么您就没有办法了。

这里有一个相关的问题:R包提供 /inst 中的可执行文件


1
我通过在调用之前包含一个“chmod”命令,使其(有点)起作用。
node_file <- system.file("./node_script.sh", package = "mypackage")
Sys.chmod(node_file, mode = "0555")
system(node_file)

对我来说,这似乎很不专业,我希望有个替代方案。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接