为Mac创建可移植的R版本(并从该版本的源代码安装软件包)

时间:2020-07-13 12:19:16

标签: r shiny rscript

我正在尝试为Mac创建一个完全可移植的R版本,可以将其发送给系统上没有R的用户,他们基本上可以双击命令文件,然后启动Shiny应用程序。我将需要能够安装软件包,包括一些从源代码构建的软件包(以及从GitHub构建的软件包)。

我正在使用此GitHub存储库(https://github.com/dirkschumacher/r-shiny-electron/blob/master/get-r-mac.sh)中的脚本作为起点(也在下面粘贴),创建了R的版本,但是(A)我发现当我尝试启动R时,给我一个错误,没有找到etc / ldpaths和(B),当我尝试启动Rscript时,它运行我的系统版本-我运行`Rscript -e'print(R.version)',它打印出4.0,这是我的系统版本而不是Shell脚本已下载并处理的3.5.1版本。

我已经尝试过编辑“ R”可执行文件并更改R_HOME和R_HOME_DIR,但是当我尝试将软件包安装到3.5.1目录时,仍然遇到问题。

任何人都可以提供一些指导吗?

(顺便说一句,不是docker的选择,这需要尽可能简单的技术技能有限的最终用户。因此,让他们安装docker etc不会成为选择)

#!/usr/bin/env bash
set -e

# Download and extract the main Mac Resources directory
# Requires xar and cpio, both installed in the Dockerfile
mkdir -p r-mac
curl -o r-mac/latest_r.pkg \
     https://cloud.r-project.org/bin/macosx/R-3.5.1.pkg

cd r-mac
xar -xf latest_r.pkg
rm -r r-1.pkg Resources tcltk8.pkg texinfo5.pkg Distribution latest_r.pkg
cat r.pkg/Payload | gunzip -dc | cpio -i
mv R.framework/Versions/Current/Resources/* .
rm -r r.pkg R.framework

# Patch the main R script
sed -i.bak '/^R_HOME_DIR=/d' bin/R
sed -i.bak 's;/Library/Frameworks/R.framework/Resources;${R_HOME};g' \
    bin/R
chmod +x bin/R
rm -f bin/R.bak

# Remove unneccessary files TODO: What else
rm -r doc tests
rm -r lib/*.dSYM

1 个答案:

答案 0 :(得分:0)

很高兴帮助您将其用于闪亮的应用程序。您可以将此github存储库用于Electron包装R / Shiny ...只需克隆,然后替换app.R(对于其他包,您需要在克隆后将其安装在本地R文件夹中,然后从命令行运行R R-Portable-Mac / bin文件夹的...

使用附带的Hello World app.R尝试

https://github.com/ColumbusCollaboratory/electron-quick-start

然后,将软件包安装在本地R-Portable-Mac文件夹运行时中。默认包含的软件包... https://github.com/ColumbusCollaboratory/electron-quick-start/tree/master/R-Portable-Mac/library 使用本地R-Mac-Portable运行时,从命令行在install.packages()之后显示您的软件包。

为此,我们也在研究R Addin。 https://github.com/ColumbusCollaboratory/photon

但是,请注意,该插件仍在开发中,不适用于已编译的R包;仍然必须在命令行上进入本地R文件夹和运行时,并将软件包直接安装到本地R文件夹libpath中,如上所述。

尝试一下,如果您有任何疑问和问题,请通过Github让我们知道。而且,如果您已经在外面发布了,很抱歉,我们尚未回复。如果您有时间帮助,希望通过光子加载项进行通信,以使其与编译包一起工作(进入libPath)。谢谢!

相关问题