當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


R install.packages 從存儲庫或本地文件安裝包


R語言 install.packages 位於 utils 包(package)。

說明

從 CRAN-like 存儲庫或本地文件下載並安裝軟件包。

用法

install.packages(pkgs, lib, repos = getOption("repos"),
                 contriburl = contrib.url(repos, type),
                 method, available = NULL, destdir = NULL,
                 dependencies = NA, type = getOption("pkgType"),
                 configure.args = getOption("configure.args"),
                 configure.vars = getOption("configure.vars"),
                 clean = FALSE, Ncpus = getOption("Ncpus", 1L),
                 verbose = getOption("verbose"),
                 libs_only = FALSE, INSTALL_opts, quiet = FALSE,
                 keep_outputs = FALSE, ...)

參數

pkgs

應從存儲庫下載其當前版本的包名稱的字符向量。

如果 repos = NULL ,文件路徑的字符向量,

在 Windows 上,

‘的文件路徑。壓縮' 包含包的二進製構建的文件。 (‘⁠http://⁠' 和 '⁠文件://⁠’ URL 也被接受,文件將從本地副本下載並安裝。)源目錄或文件路徑或存檔的 URL 可以用以下方式指定:type = "source",但有些軟件包需要安裝合適的工具(請參閱“詳細信息”部分)。

在類似 Unix 係統上,

這些文件路徑可以是源目錄或存檔或二進製包存檔文件(由R CMD build --binary)。 (‘⁠http://⁠' 和 '⁠文件://⁠' URL 也被接受,文件將從本地副本下載並安裝。)在 CRAN 版本上R對於 macOS,這些可以是‘.tgz' 包含二進製包檔案的文件。 Tilde-expansion 將在文件路徑上完成。

如果缺少此選項,則會在可能的情況下以交互式方式顯示可用包的列表框R會議。

lib

給出安裝包的庫目錄的字符向量。根據需要回收。如果缺少,則默認為 .libPaths() 的第一個元素。

repos

字符向量,要使用的存儲庫的基本 URL,例如 CRAN 鏡像的 URL,例如 "https://cloud.r-project.org" 。有關支持的 URL 方案的更多詳細信息,請參閱 url

可以是 NULL 從本地文件、目錄或 URL 安裝:如果長度為 1,這將通過 pkgs 的擴展名推斷出來。

contriburl

存儲庫貢獻部分的 URL。如果您的存儲庫鏡像不完整,請使用此參數,例如,因為您僅鏡像了“貢獻’部分,或者隻有二進製包。覆蓋參數repos。不兼容type = "both".

method

下載方法參見download.file。如果提供非 NULL available,則不使用。

available

available.packages 返回的矩陣,列出存儲庫中可用的包,或當函數對 available.packages 進行內部調用時由 NULL 返回。與 type = "both" 不兼容。

destdir

存儲下載的包的目錄。如果是NULL(默認),將使用會話臨時目錄的子目錄downloaded_packages(並且文件將在會話結束時被刪除)。

dependencies

邏輯指示是否還安裝這些軟件包所依賴/鏈接/導入/建議的已卸載軟件包(等等遞歸地)。如果 repos = NULL 則不使用。也可以是字符向量,c("Depends", "Imports", "LinkingTo", "Suggests", "Enhances") 的子集。

僅當 lib 長度為 1(或缺失)時才受支持,因此在何處安裝依賴包是明確的。如果不是這種情況,則會被忽略並發出警告。

默認值 NA 表示 c("Depends", "Imports", "LinkingTo")

TRUE 意味著使用 c("Depends", "Imports", "LinkingTo", "Suggests") 表示 pkgs 並使用 c("Depends", "Imports", "LinkingTo") 來添加依賴項:這將安裝運行 pkgs 所需的所有軟件包、它們的示例、測試和小插圖(如果軟件包作者正確指定了它們)。

在所有這些中,二進製包省略了"LinkingTo"

type

字符,指示要下載和安裝的包的類型。除 Windows 和某些 macOS 版本外,將是 "source":請參閱“二進製包”部分。

configure.args

(僅用於源安裝。)字符向量或命名列表。如果提供沒有名稱的字符向量,則元素將連接成單個字符串(用空格分隔)並用作--configure-args調用中的標誌R CMD INSTALL。如果字符向量有名稱,則假定這些名稱用於標識值--configure-args對於單獨的包。這允許用戶指定整個軟件包集合的設置,如果要安裝其中任何一個軟件包,將使用這些設置。 (因此,這些設置可以重複使用並充當默認設置。)

命名列表也可以用於達到相同的效果,並且允許每個包的多元素字符串連接到單個字符串,用作值--configure-args.

configure.vars

(僅用於源安裝。)類似於configure.args為旗幟--configure-vars,用於設置環境變量configure跑步。

clean

一個邏輯值,指示是否添加 - 幹淨的標記為調用R CMD INSTALL。除了刪除中間文件之外,有時還用於在軟件包安裝結束時執行其他操作。

Ncpus

用於並行安裝多個源包的並行進程數。如果滿足以下條件,則支持大於一的值make由指定的命令Sys.getenv("MAKE", "make")接受論點-k -j \var{Ncpus}.

verbose

一個邏輯指示是否應該給出一些“progress report”。

libs_only

邏輯值:應該--libs-only選項可用於僅安裝額外的 sub-architectures 進行源安裝? (也可以看看INSTALL_opts.) 這也可以在 Windows 上使用,僅安裝二進製包中的 DLL,例如將 64 位 DLL 添加到 32 位安裝中。

INSTALL_opts

要傳遞給 R CMD INSTALL 以進行源包安裝的附加選項的可選字符向量。例如,c("--html", "--no-multiarch", "--no-test-load")

也可以是用作附加選項的字符向量的命名列表,名稱為相應的包名稱。

quiet

邏輯:如果為真,則減少輸出量。如果有意調用,則不會將其傳遞給available.packages()

keep_outputs

邏輯:如果為 true,則保留在當前工作目錄中安裝源包的輸出,輸出文件的名稱為包名稱帶有“。出去” 附加。或者,給出保存輸出的目錄的字符串。從本地文件安裝時被忽略。

...

要傳遞給 download.fileavailable.packages 或 macOS 和 Windows 上的二進製安裝函數的參數(接受參數 "lock" :請參閱“鎖定”部分)。

細節

這是安裝軟件包的主要函數。它采用名稱向量和目標庫,從存儲庫下載軟件包並安裝它們。 (如果省略庫,則默認為 .libPaths() 中的第一個目錄,如果有多個目錄,則會顯示一條消息。)如果省略 lib 或長度為 1 並且不是(組)可寫目錄,則在交互式使用提供的代碼創建個人庫樹(Sys.getenv("R_LIBS_USER") 的第一個元素)並安裝在那裏。

在 Windows 上檢測可寫目錄是有問題的:請參閱“注意”部分。

對於從存儲庫安裝,會嘗試按照尊重軟件包依賴關係的順序安裝軟件包。這確實假設所有條目lib位於安裝的默認庫路徑上(由環境變量設置R_LIBS)。

建議您在 install.packages 之前運行 update.packages,以確保任何已安裝的依賴項均具有最新版本。

看不見的NULL

二進製包

本節僅適用於提供二進製包的平台:Windows 和適用於 macOS 的 CRAN 版本。

R軟件包主要分發為資源包,但是二進製還支持軟件包(已安裝軟件包的打包),並且是 Windows 上最常用的類型以及 CRAN 為 macOS 構建的類型。此函數可以通過從存儲庫或本地文件下載文件來安裝任一類型。

type 的可能值(當前)為 "source""mac.binary""win.binary" :也可以選擇支持的適當二進製類型作為 "binary"

對於來自存儲庫的二進製安裝,該函數會檢查同一存儲庫上源包的可用性,並報告源包是否有更高版本,或者可用但沒有二進製版本。可以通過使用來抑製此檢查

    options(install.packages.check.source = "no")

如果存在僅包含二進製文件的部分存儲庫,則應該如此。

另一種選擇(也是當前的默認值)是"both",這意味著“如果可用且當前使用二進製文件,否則嘗試源代碼”。如果存在首選的源包,但可能包含需要編譯的代碼,則由 getOption("install.packages.compile.from.source") 控製。如果指定了contriburlavailabletype = "both" 將自動更改為"binary"

如果包不包含需要編譯的 C/C++/Fortran 代碼,則將包與 type = "source" 一起使用始終有效。否則,

在 Windows 上,

您需要安裝 Rtools 集合,如“R for Windows 常見問題解答”中所述你必須有PATH根據 Rtools 的要求設置環境變量。

對於 32/64 位安裝R在 Windows 上,一小部分帶有編譯代碼的包需要INSTALL_opts = "--force-biarch"或者INSTALL_opts = "--merge-multiarch"用於源安裝。 (從存儲庫或 tarball 安裝時始終設置後者是安全的,盡管速度會慢一些。)

在 Windows 上安裝軟件包時,install.packages如果檢測到該軟件包已安裝且當前正在使用,將中止安裝。在某些情況下(例如,多個實例R同時運行並共享庫)它不會檢測到問題,但安裝可能會失敗,因為 Windows 鎖定正在使用的文件。

在類似 Unix 係統上,

當包中包含需要編譯的C/C++/Fortran代碼時,需要安裝合適的編譯器和相關工具。在 macOS 上,您需要安裝“Xcode 命令行工具”(請參閱“R 安裝和管理”手冊),如果軟件包需要,還需要安裝 Fortran 編譯器,並將它們放在您的路徑中。

鎖定

有多種鎖定選項:這些選項在源安裝和二進製安裝之間有所不同。

默認情況下,對於源安裝,庫目錄是‘locked’,通過創建目錄‘00鎖’在其中。這有兩個目的:它防止任何其他進程同時安裝到該庫中,並用於存儲包的任何先前版本以在錯誤時恢複。選項提供了更細粒度的鎖定--pkglock它為每個包創建一個單獨的鎖:這為並行安裝提供了足夠的自由度。 Per-package 鎖定是安裝單個軟件包時的默認設置,以及安裝多個軟件包時的默認設置Ncpus > 1L。最後可以通過以下方式抑製鎖定(以及錯誤恢複)--no-lock.

對於 macOS 二進製安裝,默認情況下不進行鎖定。將參數 lock 設置為 TRUE (默認為 getOption("install.lock", FALSE) 的值)將使用 per-directory 鎖定,如源安裝所述。對於 Windows 二進製安裝,默認使用 per-directory 鎖定( lock 默認為 getOption("install.lock", TRUE) 的值)。如果值為"pkglock" per-package 將使用鎖定。

如果在 Windows 上使用libs_only = TRUE 使用包鎖定並且安裝失敗,則包將恢複到之前的狀態。

請注意,軟件包安裝可能會嚴重失敗,以致於鎖定目錄未被刪除:這會禁止任何進一步安裝到庫目錄(或--pkglock,包的),直到手動刪除鎖定目錄。

並行安裝

在以下情況下嘗試並行安裝:pkgs長度大於一並且Ncpus > 1。它利用並行make, 所以make指定(默認make) 什麽時候R建成後必須能夠支撐使 -j \var{n}:GNU 製造,dmakepmake可以,但是Solarismake和更舊的FreeBSDmake不要:如果需要環境變量MAKE可以為當前會話設置選擇合適的make.

install.packages需要能夠計算所有的依賴關係pkgsavailable,包括如果其中一個元素pkgs間接依賴於另一個。這意味著如果您正在安裝CRAN依賴於 Bioconductor 包的包,而 Bioconductor 包又依賴於CRAN包,available需要涵蓋兩者CRAN和生物導體包。

超時

每次調用的經過時間限製R CMD INSTALL(所以對於源安裝)可以設置通過環境變量_R_INSTALL_PACKAGES_ELAPSED_TIMEOUT_:以秒為單位(或以分鍾或小時為單位,帶有可選後綴‘⁠m⁠' 或者 '⁠h⁠', 後綴 '⁠s⁠' 允許默認秒數)0意思是沒有限製。

對於非並行安裝,這是實現的通過 timeout的論點system2:用於並行安裝通過操作係統的timeout命令。 (測試的是來自GNUcoreutils,通常在 Linux 上可用,但在其他 Unix 類似係統上不可用。如果沒有此類命令可用,則忽略超時請求並發出警告。在 Windows 上,需要指定一個合適的timeout通過環境變量執行命令R_TIMEOUT, 因為 'c:/Windows/system32/timeout.exe’不是。)對於並行安裝,‘⁠錯誤124⁠’ 消息來自make表明發生超時。

安裝期間超時可能會留下鎖定目錄並且無法恢複以前的版本。

源安裝的版本要求

如果您沒有運行 up-to-date 版本R您可能會看到類似這樣的消息

   package 'RODBC' is not available (for R version 3.5.3)

一種可能性是該軟件包在任何選定的存儲庫中都不可用;另一個是可用,但僅適用於當前或最新版本R。為了CRAN包查看包的 CRAN 頁麵(例如,https://cran.r-project.org/package=RODBC)。如果在‘⁠取決於⁠' 字段依賴於更高版本的R你需要查看‘⁠舊來源⁠’部分,然後選擇與您的年齡相當的版本的 URLR。然後您可以提供該 URL 作為第一個參數install.packages():您可能需要首先手動安裝其依賴項。

對於其他存儲庫,使用available.packages(filters = "OS_type")[pkgname, ]將顯示該軟件包是否可用於任何R版本(針對您的操作係統)。

注意

在 Unix 類係統上:

一些二進製發行版RINSTALL在一個單獨的捆綁包中,例如一個R-devel轉速。install.packages如果調用的話會給出錯誤type = "source"在這樣一個係統上。

一些二進製 Linux 發行版R可以安裝在沒有安裝軟件包所需工具的機器上:可能的補救措施是完整安裝R它應該將所有這些工具作為依賴項引入。

在 Windows 上:

install.packages嘗試檢測您是否對指定的庫目錄具有寫權限,但 Windows 報告不可靠。如果隻有一個庫目錄(默認),R嘗試通過創建測試目錄來找出答案,但即使這也不一定是全部:您可能有權在庫目錄中寫入,但缺乏寫入二進製文件的權限(例如“.dll’文件)那裏。請參閱“R for Windows 常見問題解答”了解解決方法。

例子

## Not run: 
## A Linux example for Fedora's layout of udunits2 headers.
install.packages(c("ncdf4", "RNetCDF"),
  configure.args = c(RNetCDF = "--with-netcdf-include=/usr/include/udunits2"))

## End(Not run)

也可以看看

update.packagesavailable.packagesdownload.packagesinstalled.packagescontrib.url

請參閱download.file 了解如何處理代理和其他選項來監視文件傳輸。

untar 用於手動解壓源包 tarball。

INSTALL , REMOVE , remove.packages , library , .packages , read.dcf

有關如何設置存儲庫的“R 安裝和管理”手冊。

相關用法


注:本文由純淨天空篩選整理自R-devel大神的英文原創作品 Install Packages from Repositories or Local Files。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。