2016-04-28 143 views
0

我有一个没有连接到互联网的Debian虚拟机。但是,我仍然可以从我的本地机器上连接互联网的任何文件。为了提供一点点上下文,我试图在VM上托管一个闪亮的应用程序。如何在脱机Debian机器上安装R软件包?

我仍然可以用“的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 

所以,我想我是否可以scp“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’ 

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

+0

“R CMD INSTALL”命令不会自动查找并安装依赖关系,并且在不满足依赖关系时它将拒绝安装包。可能有一个更简单的方法,但我只是通过它们出现时的依赖关系(httpuv是一个你已经被告知是必需的)并且R CMD将它们逐个安装。他们很容易找到,只需在浏览器中根据您下载闪亮包的链接导航到r项目页面(只需删除最后的闪亮部分),然后搜索您要查找的包。通常需要3分钟左右才能找到所需的所有依赖关系。 – rosscova

回答

0

Shiny有一些软件包依赖项,“R CMD INSTALL”不会为你找到它们,所以你需要手动获取它们。根据闪亮的描述,它的依赖关系是: 'Rcpp','httpuv','mime','jsonlite','xtable','digest','htmltools','R6'。 首先,从cran获取软件包(以下是当前版本,但它们会随着时间而改变,下面的注释针对连接到互联网的计算机,在继续之前需要将这些文件scp到离线计算机):

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应该让你安装闪亮。

+0

它完美的作品!谢谢@rosscova!另外,感谢列出所有的“wget”!:) –

0

要在Debian安装一些包,离线,您可以使用apt-offline

的apt-下线可以完全更新并没有连接到网络升级APT为基础的分配,它的所有透明的APT。

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

上的脱机OS(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

+1

Thanks @ GAD3R!我以前从未使用过“apt-offline”,但探索它会很好。然而,手动安装依赖关系可能更直截了当。尽管谢谢你的回答! –

+0

'apt-offline'可以安装程序及其所有依赖 – GAD3R

+0

我明白了。所以,我需要scp“debian-install。sig“到我的在线系统以生成”debian-install.zip“,然后将此zip文件上传回离线系统以完成安装?它可以与任何R软件包一起工作?apt-offline可以找出所有需要的依赖关系并构建压缩文件? –

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,所以如果您在虚拟机上使用它,则不需要其他任何东西。

0

sudo易于得到更新

命令和apt-get安装R-CRAN消化


我`吨相信的,它是那么容易。我花了很长时间搜索,只得到了不好的答案。这个命令只是解决了一切。 我在trisquel上使用它

相关问题