簡體   English   中英

脫機安裝R軟件包和依賴項

[英]Offline install of R package and dependencies

假設我需要在沒有Internet連接的(Linux)機器上安裝許多軟件包。 假設我下載了一份cran副本,並將其刻錄到DVD上,然后將其帶到離線位置:

wget ftp://cran.r-project.org/pub/R/src/contrib/*.tar.gz

我什至可以添加一個PACKAGES文件,其中包含所有源包及其依賴項的概述:

library(tools)
write_PACKAGES()

我如何使用此脫機方式安裝源程序包,從而也可以解決依賴關系並從本地文件安裝? 例如,某人想要安裝軟件包ggplot2,它具有相當深的依賴性結構。 假設ggplot2的源包及其所有依賴項都可以在當前工作目錄中作為源包使用。 如果我做:

install.packages("ggplot2_0.9.1.tar.gz", repos=NULL)

這將導致錯誤,因為根本無法解決依賴關系。 或者:

install.packages(list.files(pattern="*.tar.gz"), repos=NULL)

但是,這也忽略了依賴關系結構,並嘗試按字母順序安裝軟件包,這也會失敗。

我研究了available.packagescontrib.url但是我找不到從本地文件(包括其依賴項)安裝源程序包的示例。

約書亞·烏爾里希(Joshua Ulrich)在對問題的評論中給出了正確答案:

關鍵是在reposcontriburl的參數前面加上file:// 因此,在Unixy系統中,可以做到:

install.packages("ggplot2", contriburl="file:///path/to/packages/")

假設所有必需的源軟件包以及PACKAGES索引文件都在/path/to/packages可用。 如果沒有PACKAGES文件,則應首先使用以下命令生成:

library(tools)
write_PACKAGES("/path/to/packages/")

這將生成在此目錄中找到的所有源包的索引。 請注意,在示例中, file:前綴后面有3個斜杠。 第三個斜杠表示相對於文件系統根目錄的路徑。

reposcontriburl參數之間的區別在於, repos會將另一個/src/contrib附加到指定的路徑,因為通常這是源程序包位於官方CRAN存儲庫鏡像上的位置。

參考上面的答案,如果安裝在Windows中,則write_PACKAGES()會生成兩個文件:在/ zip / to / packages /目錄下的PACKAGES和PACKAGES.gz,其中放置了所有zip文件。 在install.packages()函數能夠正確讀取單獨的PACKAGES文件之前,應刪除文件PACKAGES.gz,否則會出現“無法打開壓縮文件”錯誤。

在脫機安裝過程中,我遇到了同樣的問題。 不知何故,它無法通過命令行運行。

我下載並提取了所有依賴項(需要檢查最低版本),然后將文件夾粘貼到庫文件夾中。 這樣,只有我的問題得到了解決。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM