R包构建&pkgbuild :: compile_dll失败; / tmp中的新文件不可执行

时间:2019-06-23 20:56:47

标签: r permissions devtools tmp rstan

我正在尝试构建一个软件包并安装使用Rccp的R软件包。这些失败的原因是/tmp中的文件不可执行。

这些问题出现在切换到预装有Ubuntu 18.04的新Dell xps 13之后。对于构建,我一直使用pkgbuild::compile_dllRccp编译一些C代码。我只是在对compile_dll进行故障排除时发现了安装新软件包的问题。这证实了pkgbuild没问题。

这是来自compile_dll的错误消息:

> pkgbuild::compile_dll()
Registered S3 methods overwritten by 'ggplot2':
  method         from 
  [.quosures     rlang
  c.quosures     rlang
  print.quosures rlang
Re-compiling spstan
─  installing *source* package ‘spstan’ ...
   ** using staged installation
   ERROR: 'configure' exists but is not executable -- see the 'R 
Installation and Administration Manual'
─  removing 
‘/home/connor/tmp/RtmpC0EMxX/devtools_install_570e38f2a7e3/spstan’
Error in (function (command = NULL, args = character(), 
error_on_status = TRUE,  : 
  System command error

似乎有很多帮助,除了没有一种解决方案对我有用。这是我尝试过的。

  1. 按如下方式重新安装/tmp https://github.com/r-lib/devtools/issues/32

重新安装/ tmp并启用可执行文件,请在终端中输入以下内容:

sudo mount -o remount,exec /tmp

给出以下错误消息:mount point not mounted or bad option.由于/tmp并未单独安装在我的计算机(它是根文件系统的一部分)上,因此上述解决方案失败,因为/tmp无法重新安装。

  1. 按照《 R安装和管理手册》中的说明,确保TMPDIR指向一些允许在其中执行脚本的临时文件系统。因此,我创建了一个名为~/Rtmp的新tmp文件夹并将其安装:

    mkdir〜/ Rtmp  挂载-t tmpfs -o exec〜/ Rtmp

还将以下行添加到我的~/.Renviron文件中:

TMPDIR=/home/connor/Rtmp

并将以下行添加到/etc/fstab

tmpfs           /home/connor/Rtmp            tmpfs   exec   0       0

,然后重新引导计算机,然后再次运行pkgbuild::compile_dll()。我收到相同的错误消息,但我可以确认R正在使用我定向到的/Rtmp文件夹。

  1. 按照此处的建议https://ubuntuforums.org/showthread.php?t=2421441递归更改/ tmp文件夹的权限

sudo chmod -R 777 ~/tmp

这也失败。问题似乎是compile_dll正在创建要运行的新脚本,并且文件夹的权限不是添加到其中的新文件的默认权限。

当我打印出/tmp的权限时,列出的失败compile_dll的脚本没有与所有旧文件相同的权限:

drwx------  3 connor connor 4096 Jun 23 15:20 RtmpC0EMxX
drwxrwxrwx  9 root   root   4096 Jun 23 09:53 RtmpGb3QiA
drwxrwxrwx  3 connor connor 4096 Jun 23 10:44 RtmpI9hu1U
drwxrwxrwx  2 connor connor 4096 Jun 23 10:41 RtmpIgi5su
drwxrwxrwx  2 connor connor 4096 Jun 23 10:07 RtmpK4p4Od
drwxrwxrwx  4 root   root   4096 Jun 23 09:17 RtmppdbqeT
drwxrwxrwx 10 root   root   4096 Jun 23 09:54 RtmpR4Cc9c
drwxrwxrwx 14 root   root   4096 Jun 23 10:13 Rtmpuweyxz
drwxrwxrwx  2 connor connor 4096 Jun 23 10:07 RtmpwN9SbT
drwxrwxrwx  2 connor connor 4096 Jun 23 10:04 RtmpY7g0NK

所以我仍然被困住。我在这里做错什么了吗?还是我需要开始在其他地方寻找问题的根源?

0 个答案:

没有答案