【问题标题】:Installing R on Android在 Android 上安装 R
【发布时间】:2016-08-26 09:21:44
【问题描述】:

我正在尝试在 Android 操作系统上安装它(我有一台三星 Galaxy 平板电脑)。我想同时安装 R 和 RStudio。

我一直在网上尝试了解这一点,但大多数文章都很旧(可以追溯到 2013 年),对我来说没有多大意义。

我在我的个人笔记本电脑(使用 Windows 操作系统)上安装了 R 和 R studio,发现它们都非常易于设置,但在平板电脑上操作时遇到了一些麻烦。

如果最近有人做过并且成功了,请告诉我。

【问题讨论】:

标签: android r rstudio


【解决方案1】:

这是我截至 2021 年 10 月的实验摘要。长话短说:我的平板电脑上有一个可以正常工作的 R(包含 tidyverse),我可以从 jupyter 访问它(这不是我在一般,但可能适合这个平台和我的使用 - 我不打算在 Android 上开发,只是尝试代码 sn-ps 等)。

这主要来自本文以及How do I install Jupyter notebook on an Android device?,以及其中的链接。

另外,请注意读者:我不是 Linux 方面的专家,更不是 Android 方面的专家,而且我对 Python 的了解很少。对于任何错误或不准确的陈述,我们深表歉意。

包括反复试验,整个过程花了我大约 5 个小时。现在我知道该怎么做了,我可能会在 1 或 2 内完成。

简介

Android 是伪装的 linux,因此原则上可以安装所有或大多数 linux 应用程序。但是,有几个警告:

  1. 您通常没有设备的 root 访问权限(除非它已被 root,这是另一种蠕虫);
  2. 编译二进制文件时,必须针对此特定架构进行编译。

由于这些原因,您不能总是使用普通的 .deb 或 .rpm 包,需要走一条有点复杂的路线。

此外,R-studio 似乎无法在没有 root 权限的情况下安装(因为它本身需要 root,或者因为它依赖于普通用户无法安装的库)。

假设你不想走根路线,你仍然可以管理很多事情。

您需要对 linux 命令 (cd, ls, chmod, ln...) 有一些基本的了解,并且至少需要了解如何在 linux 中安装和管理软件包(apt-getpkg),在R (install.packages()) 和 python (pip install)。此外,如果您知道编译器是什么 (gcc),并且如果您意识到某些 R/python 包依赖于通常驻留在系统其他位置的已编译代码(二进制文件),也不会造成伤害。

Termux

Termux 是“一个 Android 终端模拟器和 Linux 环境应用程序”,一个在 Android 上运行的便携式 Linux 发行版(或多或少)。

很遗憾,目前 G-play 上的版本不是最新的,所以你想使用 f-droid 版本。因此,安装 f-droid,然后从 f-droid 安装 termux。

配置termux

您需要在 termux 上启动和运行基本工具(编译器等)。这将需要安装包,反过来,您需要为此平台编译的包。在 termux 中,许多包由运行相关存储库的“its-pointless”维护。所以,在 termux 中:

# basic utilities
pkg install curl gnupg
# Configure its-pointless repo
mkdir -p "$PREFIX/etc/apt/sources.list.d/"
echo "deb https://its-pointless.github.io/files/24 termux extras" > "$PREFIX/etc/apt/sources.list.d/pointless.list"
curl "https://its-pointless.github.io/pointless.gpg" | apt-key add

现在您可以安装更多实用程序,从它的毫无意义的 repo:

pkg install make \
            clang \
            gcc-9 \
            libgfortran3 \
            openssl \
            libcurl \
            libicu \
            libxml2

并配置你的编译器

setupclang-gfort-9

R!

仍然在 termux 中,运行

pkg install r-base

在那个阶段,您的系统上应该有一个可以工作的 R(虽然纯粹基于文本,但您仍然可以使用外部编辑器和 source() 您的脚本)。

更好的东西?

你可能想要一个 GUI,或者更多的包(tidyverse)。很快,您将面临的主要问题是 linux 中的许多 R 包依赖于系统库,需要从 linux 安装。原则上,您应该能够从 install.packages() 安装完整的库(二进制文件和 R 代码),它会启动 gcc 以编译所需的任何代码;但实际上,编译似乎经常失败。可能 Android gcc 有它的怪癖......

因此,一般的想法是从 termux(或其无意义的)repo 安装您需要的 R 包,或者至少是它们所依赖的库。顺便说一下,python 库也是如此。

安装 R 包

在 R 中,尝试使用通常的 install.packages() 命令安装您需要的东西。如果需要编译某些东西,它可能会失败。仔细阅读错误 - 最终你会发现一行写着“缺少 libpango.so”。这告诉您,在这种情况下,您需要安装 pango,它恰好属于 pango 包:在 termux 中,运行 pkg install pango,然后返回 R 并重试。

此外,将您的软件包更新到最新版本 (pkg upgrade all) 不会有任何危害...

在堆栈溢出时,您会发现对 zlib、libpng 等的各种引用...阅读并解释错误消息。

在一种情况下(R 包 repr,需要 base64,它本身依赖于 libicu)我遇到了版本问题 - 其中一个 termux 包(错误地)需要旧版本的 libicuuc (libicuuc.so.68),而相同的 termux 在我的系统上安装了 libicuuc.so.69。在这种情况下,解决方法是在适当的目录中创建一个符号链接,如下所示

ln -s libicuuc.so.69 libicuuc.so.68

.. 系统很高兴地跟着链接 :-)

通过玩这个,我设法安装了 tidyverse,以及在 R 和 jupyter 之间建立连接所需的 IRkernel。 IRkernel 需要在 R 中配置:IRkernel::installspec()

VNC

Installing R on Android的一位用户提到可以安装VNC,获取Rcmdr。我没试过。

Jupyter

也可以安装 jupyter 或 jupyter-labs(一般情况下这不是我最喜欢的 IDE,但在 Android 设备上可能是一个合适的平台)。

Jupyter 是基于 python 的,因此您需要使用 Python 和 python 包玩同样的游戏。 Python 包是使用pip(来自 linux 命令行)安装的,编译的二进制文件也会有同样的问题。幸运的是,最棘手的 python 包是由 it-pointless for termux 打包的,所以在这里,你最终也会在 pip 之外安装很多东西。

Installing R on Android 建议在 termux 之上安装 ubuntu,然后在 ubuntu 中安装 jupyter。我觉得没必要 (How do I install Jupyter notebook on an Android device?)

Termux 需要更多包:

pkg install  python fftw libzmq freetype libpng pkg-config libcrypt

还有对modejsliblapack-devlibopenblas-dev的引用,我不记得它们最终是否需要(或者已经被其他东西安装了)。有时也会将相关代码从 dev 包中移出到一个稳定的包中(所以它会是 liblapack)

然后,你需要安装 python 的东西。网络来源建议

LDFLAGS="-lm -lcompiler_rt" pip install jupyter

或/和,取决于您要使用的版本

LDFLAGS="-lm -lcompiler_rt" pip install jupyter-lab

和(在 jupyter 中不是必需的,但很有用):

LDFLAGS="-lm -lcompiler_rt" pip install numpy matplotlib

我不确定我们为什么需要 LDFLAGS...

和以前一样,一些“混合”包最好从 termux 安装,例如 scipy(技术上是一个 python 包,应该使用pip install scipy 安装)更容易安装(或者必须安装?)使用 termux版本,所以pkg install scipy

同样,需要进行一些调试。阅读 pip 输出,尝试找出哪个包安装失败,看看你可以从 termux 做什么,再试一次。有时我发现删除 LMFLAGS 会有所帮助(或逐个安装软件包),例如普通的 pip install cffipip install pyzmq 比将它们安装为 jupyter 的依赖项效果更好。不知道为什么。

最后,我启动了 jupyter(在 termux 控制台中输入 jupyter notebookjupyter lab,复制 url,在浏览器中打开)......只是在第一个命令时 R 崩溃。回到 termux,我可以看到它仍然缺少某个库,我从 termux 跟踪并安装了它(我认为这次是 pango)。

简而言之:阅读友好的错误消息

【讨论】:

    【解决方案2】:

    不完全是 R Studio,但仍然很酷......请遵循来自 Conor Anderson's blogInstalling R on Android via Termux 指南。

    第 1 步:从 F-Droid(或 Google Play 商店)安装 Termux

    Install from F-Droid

    第 2 步:添加 its-pointless 包存储库

    一次输入以下命令:

    pkg install curl gnupg
    mkdir -p "$PREFIX/etc/apt/sources.list.d/"
    echo "deb https://its-pointless.github.io/files/24 termux extras" > "$PREFIX/etc/apt/sources.list.d/pointless.list"
    curl "https://its-pointless.github.io/pointless.gpg" | apt-key add
    

    第 3 步:安装所需的 .deb 包

    安装以下软件包。单独安装每个软件包以监控警告可能是明智的,我认为其中一些软件包可能会在此时被弃用。

    pkg install r-base \
                make \
                clang \
                gcc-9 \
                libgfortran3 \
                openssl \
                libcurl \
                libicu \
                libxml2
    

    第 4 步:配置编译器

    setupclang-gfort-9
    

    第 5 步:通过输入大写 R 来启动 R

    R
    

    第 6 步:使用 Nvim-R 或您喜欢的任何其他工具进一步自定义

    【讨论】:

      【解决方案3】:

      Rstudio-server 在安装在 ubuntu 中 termux 的非 root 设备中无法工作。相关链接:rstudio in android - rootednon-root rstudio discussion

      我在无根设备中找到了两种解决方法。使用浏览器或 VNC 查看器。

      1。浏览器(jupyter)方式

      (在装有 Android 7.1 的瑜伽书和装有 Android 8 的华为手机中测试 - ggplot 1.66 Gb 的大小)

      • 安装 termux (google play)(因为 termux 没有运行 jupyter-IRkernel,我必须安装 ubuntu)
      • 在 termux 中安装 ubuntu(MFDGamingNeo-Oli)。
      • 在 ubuntu 中运行:
          apt update && apt upgrade
          apt-get install apt-transport-https software-properties-common
      
          # add R repository
          add-apt-repository 'deb https://cloud.r-project.org/bin/linux/ubuntu disco-cran35/'
          apt-key adv --keyserver keyserver.ubuntu.com --recv-keys E298A3A825C0D65DFD57CBB651716619E084DAB9
          apt update && apt upgrade
          
          apt install nodejs
          apt install npm # absence of this causes non-editable cells in jupyter
          apt install gfortran
          apt install liblapack-dev
          apt install libopenblas-dev
          
          # install R
          apt install r-base-dev # or r-base or r-base-core
          
          # install python package manager
          apt-get install python3-pip
      
          # install jupyter
          pip3 install jupyterlab
      
          # open R
          R 
      
      • R 内部:
          # Package necessary for jupyter
          install.packages("IRkernel")
          IRkernel::installspec()
          q()
      
      • 在 ubuntu 中,运行 jupyter 实验室
          jupyter lab --allow-root
          # as you will see you have to paste something like this in your internet browser
          http://127.0.0.1:8889/?token=1a0f9b3d472d155bb4d46df119b937646d6192f569c9d635 
      

      • 您需要在电池设置中禁用 termux 的自动休眠功能。

      注意:在 termux 应用程序(google play)中可以安装 R,见Conor link;重要的setupclang-gfort-8 步骤可以在安装makegcc-8 并在(过时的)Conor 协议的输出中使用新的包名称后完成。如果你想要 GUI,就会出现问题。一个选项是 Rcmdr 包,但由于 termux 没有 tcl-tk,正如您在 R 中使用 capabilities() 看到的那样,我结束了在 termux 中安装 ubuntu

      2。 VNC 方法

      • 在浏览器方法中安装 termux 和 ubuntu
      • 在ubuntu中安装aterm
      • 在 ubuntu 中安装 R 后(见上文),安装 R Commander GUI 包:
          #in R:
          install.packages("Rcmdr")
      
      • 在ubuntu中安装vnc4server
      • 在 Android 中安装 VNC Viewer (google play)。
      • 在 ubuntu 中启动 VNC 服务器:
          tigervncserver -xstartup aterm
      
      • 在 VNC 查看器中连接到与 :1 显示相对应的 127.0.0.1:5901(以白色显示 aterm),打开 aterm 中的 R,然后打开 library(Rcmdr)

      • 绘图后,见ggplot示例,我不得不(盲目地)写dev.off(),因为没有其他方法可以返回脚本窗口。

          require(ggplot2)
          ggplot(diamonds) + geom_point(aes(x=carat, y=price, color=cut)) + geom_smooth(aes(x=carat, y=price, color=cut))
      

      注意:我在ubuntu中也安装了X11,但是好像没有提升Rcmdr的GUI体验。在带有 android 的瑜伽书中,@Ajay 的答案不起作用。

      【讨论】:

        【解决方案4】:
        1. 从 Google Play 安装 GNURoot
        2. 从 Google Play 安装 Gnuroot Wheezy。见http://www.linux-magazine.com/ Online/Blogs/Productivity-Sauce/GNURoot-Linux-on-Android-No-Root-Required 寻求更多帮助。
        3. 更新软件包存储库(两次!):

          apt-get 更新 apt-get 更新

        4. 阻止对系统 Perl 的更新:

          apt-mark 持有 perl-base

        5. 安装 R:

          apt-get install r-base

        6. 从 Debian 存储库安装所有可用的 cran 包:

          apt-get install r-cran*

        7. 从命令行启动 R:

          R

        来源 http://www.r-ohjelmointi.org/?p=1434

        【讨论】:

        猜你喜欢
        • 2013-05-16
        • 2015-10-29
        • 2015-10-26
        • 2013-09-15
        • 2016-10-28
        • 2021-08-23
        • 2012-05-14
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多