如何在离线Debian机器上安装R软件包?

时间:2016-04-28 20:35:35

标签: r linux debian shiny-server cran

我有一个没有连接到互联网的Debian虚拟机。然而,我仍然可以从我的本地机器scp任何文件,它有互联网连接。为了提供一点上下文,我试图在VM上托管一个闪亮的应用程序。

我仍然可以使用" apt-get"安装旧版本的R 3.1.1。命令:

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

然而,仍然无法找到"闪亮的"检查列表时包:

sudo apt-cache search "^r-.*" | sort

所以,我在想是否可以直接点击" shiny.tar.gz"到VM并在本地安装包?我如何离线安装任何R软件包?

我尝过类似的事情:

install.packages('/home/mli/R/dir_pkg/shiny/shiny_0.13.2.tar.gz', repos = NULL, type = "source")

然而,它没有通过和错误消息如下:

Installing package into ‘/usr/local/lib/R/site-library’
(as ‘lib’ is unspecified)
Error in type == "both" : 
comparison (1) is possible only for atomic and list types
Calls: install.packages
Execution halted

然后,我尝试了另一个" R CMD":

R CMD INSTALL /home/mli/R/dir_pkg/shiny/shiny_0.13.2.tar.gz

我收到错误消息,告诉我缺少依赖项:

* installing to library ‘/home/mli/R/x86_64-pc-linux-gnu-library/3.1’
ERROR: dependencies ‘httpuv’, ‘mime’, ‘jsonlite’, ‘xtable’, ‘digest’, ‘htmltools’, ‘R6’ are not available for package ‘shiny’
* removing ‘/home/mli/R/x86_64-pc-linux-gnu-library/3.1/shiny’

如何从源代码成功安装闪亮包?我应该先安装依赖项的所有依赖项和依赖项吗?

4 个答案:

答案 0 :(得分:0)

Shiny有一些包依赖性,&#34; R CMD INSTALL&#34;无法找到它们,所以你需要手动获取它们。根据闪亮的描述,它的依赖关系是: &#39; Rcpp','httpuv','mime','jsonlite','xtable','digest','htmltools','R6'。 首先,从cran获取软件包(下面是当前版本,但它们确实会随着时间的推移而改变。请注意下面是连接到互联网的计算机,在继续之前,您需要将这些软件scp到离线计算机):< / p>

wget https://cran.r-project.org/src/contrib/Rcpp_0.12.4.tar.gz 
wget https://cran.r-project.org/src/contrib/httpuv_1.3.3.tar.gz 
wget https://cran.r-project.org/src/contrib/mime_0.4.tar.gz 
wget https://cran.r-project.org/src/contrib/jsonlite_0.9.19.tar.gz 
wget https://cran.r-project.org/src/contrib/digest_0.6.9.tar.gz 
wget https://cran.r-project.org/src/contrib/htmltools_0.3.5.tar.gz 
wget https://cran.r-project.org/src/contrib/R6_2.1.2.tar.gz 
wget https://cran.r-project.org/src/contrib/shiny_0.13.2.tar.gz

然后使用R CMD INSTALL以相同的顺序浏览它们。例如:

R CMD INSTALL Rcpp_0.12.4.tar.gz

一旦所有依赖项都存在,R CMD INSTALL应该让你安装闪亮。

答案 1 :(得分:0)

要在Debian上安装某些脱机包,您可以使用apt-offline

  

apt-offline可以完全更新和升级基于APT的发行版而无需连接到网络,所有这些都对APT透明。

     

apt-offline可用于在计算机上生成签名(没有网络)。此签名包含APT数据库系统所需的所有下载信息。此签名文件可以在连接到Internet的另一台计算机上使用(不一定是Debian盒,甚至可以运行Windows)来下载更新。下载的数据将包含APT理解的格式的所有更新,apt-offline可以使用此数据来更新非联网机器。

在脱机操作系统(Debian)上安装apt-offline,然后输入以下命令(导入缺失的密钥):

sudo apt-key exportall | sudo gpg --no-default-keyring --import --keyring /etc/apt/trusted.gpg

然后你需要获得your_package_name的签名:

apt-offline set debian-install.sig --install-packages your_package_name

下一步,将debian-install.sig上传到在线系统并下载所需文件。

apt-offline get debian-install.sig --bundle debian-install.zip 

将debian-install.zip文件上传到离线系统,使用apt-offline实用程序安装它来更新APT数据库。

sudo apt-offline install debian-install.zip 

安装指定的包your_package_name

sudo apt-get install your_package_name

您可以使用Windows机器tuto

下载您的软件包

答案 2 :(得分:0)

你是个腌菜。 R包机制希望您连接到获取依赖项。也就是说,你可以得到一些帮助:

R> AP <- available.packages(contrib.url(options("repos")$repos[1]))
R> revs <- tools::package_dependencies("shiny", AP, recursive=TRUE)[[1]]
R> revs
 [1] "methods"   "utils"     "httpuv"    "mime"     
 [5] "jsonlite"  "xtable"    "digest"    "htmltools"
 [9] "R6"        "Rcpp"      "tools"     "stats"    
R> 

您现在可以再次查看AP并将其反馈到download.packages()

此外,其中几个(全部?)都在较新的 Debian发行版中,因此您可以在下载模式中使用apt-get(可能使用apt-offline其他问题)。

最后,我们提供Docker container for shiny,因此如果您在虚拟机上使用它,则不需要任何其他内容。

答案 3 :(得分:0)

sudo apt-get update

sudo apt-get install r-cran-digest

我不相信这很容易。我花了很长时间搜索并得到了错误的答案。这个命令只解决了一切。 我在trisquel上使用它