我正在尝试构建一个软件包并安装使用Rccp
的R软件包。这些失败的原因是/tmp
中的文件不可执行。
这些问题出现在切换到预装有Ubuntu 18.04的新Dell xps 13之后。对于构建,我一直使用pkgbuild::compile_dll
用Rccp
编译一些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
似乎有很多帮助,除了没有一种解决方案对我有用。这是我尝试过的。
/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
无法重新安装。
按照《 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
文件夹。
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
所以我仍然被困住。我在这里做错什么了吗?还是我需要开始在其他地方寻找问题的根源?