歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> 在 Android 系統上安裝 Debian Linux 與 R

在 Android 系統上安裝 Debian Linux 與 R

日期:2017/2/28 14:00:15   编辑:Linux教程

其實在 Android 平板上通過第三方軟件 , 已經可以提供很多類似一般桌面 Linux 系統的工具了 。 常用的 Firefox、VLC、 LibreOffice 以及 終端模擬器 都有 Android 版本 , 結合 Busybox 也能擁有大部分 coreutils 工具 , 甚至還有諸如 Terminal IDE 這種一站式的開發工具方案 ( 不過不支持 Android 5.0+)。 若是想要接近桌面級別的體驗的話 , 比如像在下希望使用的 R 語言環境 , 還是安裝一個完整的 Linux 環境比較好 。

在 Android 平台上 , 若是 Unlock Bootloader 且獲取了 root 權限 , 那麼有一大票的方法可以將亦或完整亦或深度定制各種的 Linux 環境安裝上去 , 網上教程也有不少 , 不再贅述 。 本文描述的方法則是 :

  1. 無需 root, 無需修改系統分區或者 Bootloader;
  2. 安裝的是正常的 Debian Linux ARM 版本 , 可從官方倉庫獲得更新 , 兼容第三方 backport 倉庫 ;
  3. 允許多個 Linux 發行版共存 , 非常方便的刪除或重建 , 無需擔心在系統或者 SD 卡上有異樣殘留 。

首先請出主角 GNURoot 及 GNURoot Wheezy。 前者在應用程序級別提供一個虛擬根文件系統 , 允許在其上運行為其微調的桌面 Linux 發行版 ; 後者則顯而易見的是為其打造的 Debian Wheezy 版本 。

GNURoot 本身支持多個不同的 Linux 發行版 , 在下常用的 Fedora 亦在其中 , 不過由於打包的古老亦不再維護的 Fedora 17, 實在是不推薦使用 。 至於那個 Debian WheezyX 版本 , 稍候說明 。

GNURoot 的使用方法相當直觀 。 第一步選擇要創建的根文件系統 , 若是沒有安裝上面提到的 Wheezy 的話 , 在選擇後跳轉到 Play Store 提示安裝 。 稍事片刻創建完成後 , 就可以在第二步選擇啟動了 , 記得勾上 "Launch As Fake Root" 的選項 。 第三個選項則是刪除根文件系統 , 點擊後選中的根文件系統就會干淨的刪除 , 估計您不會想現在就點擊它吧 …

不過在點擊啟動之前 , 最好確認下您已經准備好了合適的輸入設備 , 因為即將迎接您的僅僅是一個終端模擬器 , 而安裝 R 的操作需要有不少終端的操作 。 若是有藍牙鍵盤最好 , 沒有的話推薦使用這款名為 Hacker's Keyboard 的虛擬鍵盤 , 可以提供很多終端下常用的按鍵 。

Debian Wheezy 這個根文件系統生成時間稍早 , 所以當然一上來是通過 apt-get 升級到最新版本了 。 除此之外 , 諸如 less、`vim` 之類的工具也還是裝上才感覺正確了 。 有幾點注意的 :

  1. 默認登錄即是 root 賬戶 ;
  2. 主機的內置存儲和 SD 記憶卡等設備被掛載到 /storage 下 ;
  3. 由於 Android 系統權限限定 , 僅能寫入內置存儲 , 不能寫入外置 SD 卡 ;
  4. 包括 GNURoot 及 GNURoot Wheezy 在內的程序都無法移動到 SD 卡 , 因為 SD 卡上沒有可執行權限的概念 。

由於 Debian 針對 Stable 的管理策略 , 要想用上最新的 R 必須使用 backport 的倉庫 。 根據 Debian Package for R Software 的描述 , 需要將如下倉庫信息添加到 /etc/apt/sources.list 文件末尾 :

deb http://<favorite-cran-mirror>/bin/linux/debian wheezy-cran3/

對於在下的網絡來說 , 既是以下地址 :

deb http://mirrors.ustc.edu.cn/CRAN/bin/linux/debian wheezy-cran3/

通過 echo 加重定向的方式可以非常方便的將其添加到文件末尾 。

然後添加加密公鑰到 :

apt-key adv --keyserver keys.gnupg.net --recv-key 381BA480

再下來就是安裝了 :

apt-get update apt-get install r-base r-base-dev

這個過程比較漫長 , 一方面是源自訪問 Debian FTP 的速度 , 另外則是安裝及解包時間了 。 在耐心等待或者一覺之後 , 就可以開心的在平板上使用 R 語言啦 !

對於已經習慣使用圖形化 IDE Rstudio 的在下來說 ,R 終端還是需要熟悉下的 :

  1. 運行腳本需要使用 Rscript, 而非 R CMD BATCH
  2. 使用 help.start() 可以啟動 HTML 的幫助手冊頁面 , 可以在 Android 系統環境下的浏覽器中查看 。
  3. 類似的 , 圖形繪制及表格之類的 , 也可以通過嵌套在 Shiny 的方式輸出到 Web 頁面 , 之後再 Android 系統浏覽器中查看 。

最後說說同一個作者出品的 WheezyX 及 GNURoot Debian。 前者是在啟動時初始化一個 vnc 服務 , 使得可以使用本地或遠程的 VNC 客戶端看到 X 圖形化界面 。 在下嘗試了在其基礎上安裝 LXDE 桌面環境 , 在極度漫長的等待失敗 , 無法啟動 LXDE。 後者是該名作者的新作品 , 按照其說明是新的結合 , 不過根據評論來看似乎還有不少問題需要處理 。

經過這麼一番折騰 , 感覺 Android 平板還是有不少可以把玩和折騰的地方 , 特別是對 Linux 用戶來說 。 若是您有更多折騰的經歷或心得 , 不妨來稿或者在評論中分享 。

7 月 22 日更新

在本文發布第三天,GNURoot Debian 發布了新版本 0.2,這兩天再次體(zhe)驗(teng)了下:

  • 與 GNURoot 完全不同,無法延用之前創建的根文件系統,且僅支持 Debian
  • 升級到 Debian Jessie 8.1 Stable 版本,且架構支持硬浮點 armhf
  • 掛載以及和系統交互的方式變化不少,$HOME 分區可以直接在 Android 系統下訪問,還有一些奇怪的 mount 輸出沒看懂
  • 附帶的 Jessie 特別精簡,連 vi 都沒有,創建根分區之後要安裝的常用工具不少…
  • CRAN Backport 裡的 R 貌似只有針對 armel 的,而 Jessie Backport 裡的版本太老,於是想了想,干脆自己動手編譯了 R 3.2.1 版本,總共用時兩個半小時,還好
  • 至少在我使用的 Z4 Tablet 上,安裝部分應用(比如 git, openssh-client)會提示 Cannot open audit interface,谷歌說可能跟內核或者掛載有關,已經提交 Issue Report 等反饋…
  • 理論上講 RStudio Server 也可以編譯,但是至少需要解決上述的問題才能安裝必要的依賴關系。

8 月 4 日更新

上個周末 GNURoot Debian 發布了 0.26 版本,解決了之前反饋的問題,意味著可以編譯 RStudio Server 了!

  • 首先前往 RStudio 官網下載源代碼包。
  • 解壓到某處之後,仔細閱讀其中的 INSTALL 說明。
  • RStudio 需要 R 的共享庫,如果之前手動編譯 R 的過程中沒加上 --enable-R-shlib 選項的話(竟然不是默認啟用),重編譯先吧…
  • 根據說明,可以借助 dependencies/linux/install-dependency-debian 文件的內容處理編譯 RStudio 的依賴關系。由於 GNURoot Debian 默認沒有配置 sudo,這裡建議還是手動安裝各個依賴比較好
  • 幾點需要提醒的:
  • 沒必要特別安裝 OpenJDK 6,在編譯 R 的時候所用的 OpenJDK 7 即可
  • 無需擔心 AppArmor、Qt SDK 的依賴,Server 版本用不上
  • 解決完 debian 文件所描述的後,參照 common/install-common 裡的內容進一步處理依賴關系,同樣還是建議參考,但是手動處理,其實也就是手動執行同目錄下的其他以 install 開頭的腳本。當然在上一步 debian 腳本中通過倉庫解決的就不需要了,比如 boost 和 pandoc
  • 此時可以參考 RStudio 論壇上的解答,包括下載最新版本的 Closure Complier 來替換 src/gwt/tools目錄中的老版本,已經創建空的 pandoc 目錄,都是值得應用的。它還提到了使用 Oracle JDK 8 來加快 GWT 構建,這點我沒有嘗試,有興趣也可以用 OpenJDK 8 看看。這篇文檔較早,新版本還需要一些 clang 的頭文件,也是使用 install 腳本處理就好。
  • 全部依賴關系處理結束之後,返回源代碼頂層目錄,按照 INSTALL 文檔的說明,創建 build 目錄並調用 cmake 創建編譯配置文件,
  • 若一切正常,就可以使用 make install 開始編譯了(沒看錯,沒有 make 步驟)。在 Z4 Tablet 上,GWT 構建果真使用了 90 分鐘,而 C++ 代碼部分的編譯用了 6 至 8 小時(具體時間未知,因為中途睡著了…)
  • 結束之後,繼續按照 INSTALL 文檔的說明,創建服務所用的運行賬戶、添加 init.d 配置文件、創建管理腳本符號鏈接、創建運行時所必要的目錄
  • 之後就可以通過 rstudio-server start 啟動,然後在系統浏覽器中輸入 `127.0.0.1:8787`,其中 8787 是 rstudio-server 的默認端口號,就能看到熟悉的 RStduio 登錄界面啦!
  • 不過,別高興的太早…你會發現 root 賬戶登錄不能,提示需要密碼,設置密碼後還是不行,創建個全新的普通用戶,問題依舊,提示 Error occurred during transmission…網上搜到的解決方案提示根分區滿了,呃,好像不相關啊…
  • 嘗試換用 systemd 的啟動腳本時收到提示說 dbus 不可用,不知道這個會不會是原因?

所以,RStudio Server 的確可以在 Andriod/GNURoot Debian 環境下正常編譯(盡管時間比較長),但是其正常工作,似乎還需要一些研究。

更多Android相關信息見Android 專題頁面 http://www.linuxidc.com/topicnews.aspx?tid=11

Copyright © Linux教程網 All Rights Reserved