Rev 82397 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed
% File src/library/utils/man/install.packages.Rd% Part of the R package, https://www.R-project.org% Copyright 1995-2022 R Core Team% Distributed under GPL 2 or later\name{install.packages}\alias{install.packages}\title{Install Packages from Repositories or Local Files}\description{Download and install packages from CRAN-like repositories or fromlocal files.}\usage{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, \dots)}\arguments{\item{pkgs}{character vector of the names of packages whosecurrent versions should be downloaded from the repositories.If \code{repos = NULL}, a character vector of file paths,\describe{\item{on Windows,}{file paths of \file{.zip} files containing binary builds ofpackages. (\code{http://} and \code{file://} URLs are also acceptedand the files will be downloaded and installed from local copies.)Source directories or file paths or URLs of archives may bespecified with \code{type = "source"}, but some packages needsuitable tools installed (see the \sQuote{Details} section).}\item{On Unix-alikes,}{these file paths can be source directories or archivesor binary package archive files (as created by \command{R CMD build--binary}). (\code{http://} and \code{file://} URLs are alsoaccepted and the files will be downloaded and installed from localcopies.) On a CRAN build of \R for macOS these can be \file{.tgz}files containing binary package archives.Tilde-expansion will be done on file paths.}}If this is missing, a listbox ofavailable packages is presented where possible in an interactive \Rsession.}\item{lib}{character vector giving the library directories where toinstall the packages. Recycled as needed. If missing, defaults tothe first element of \code{\link{.libPaths}()}.}\item{repos}{character vector, the base URL(s) of the repositoriesto use, e.g., the URL of a CRAN mirror such as\code{"https://cloud.r-project.org"}. For more details onsupported URL schemes see \code{\link{url}}.Can be \code{NULL} to install from local files, directories or URLs:this will be inferred by extension from \code{pkgs} if of length one.}\item{contriburl}{URL(s) of the contrib sections of the repositories. Use thisargument if your repository mirror is incomplete, e.g., becauseyou mirrored only the \file{contrib} section, or only havebinary packages. Overrides argument \code{repos}.Incompatible with \code{type = "both"}.}\item{method}{download method, see \code{\link{download.file}}. Unused ifa non-\code{NULL} \code{available} is supplied.}\item{available}{a matrix as returned by \code{\link{available.packages}}listing packages available at the repositories, or \code{NULL} whenthe function makes an internal call to \code{available.packages}.Incompatible with \code{type = "both"}.}\item{destdir}{directory where downloaded packages are stored. If it is\code{NULL} (the default) a subdirectory\code{downloaded_packages} of the session temporarydirectory will be used (and the files will be deletedat the end of the session).}\item{dependencies}{logical indicating whether to also installuninstalled packages which these packages depend on/linkto/import/suggest (and so on recursively).Not used if \code{repos = NULL}.Can also be a character vector, a subset of\code{c("Depends", "Imports", "LinkingTo", "Suggests", "Enhances")}.Only supported if \code{lib} is of length one (or missing),so it is unambiguous where to install the dependent packages. Ifthis is not the case it is ignored, with a warning.The default, \code{NA}, means\code{c("Depends", "Imports", "LinkingTo")}.\code{TRUE} means to use\code{c("Depends", "Imports", "LinkingTo", "Suggests")} for\code{pkgs} and\code{c("Depends", "Imports", "LinkingTo")} for added dependencies:this installs all the packages needed to run \code{pkgs}, theirexamples, tests and vignettes (if the package author specified themcorrectly).In all of these, \code{"LinkingTo"} is omitted for binary packages.}\item{type}{character, indicating the type of package to download andinstall. Will be \code{"source"} except on Windows and some macOSbuilds: see the section on \sQuote{Binary packages} for those.}\item{configure.args}{(Used only for source installs.) A character vector or a named list.If a character vector with no names is supplied, the elements areconcatenated into a single string (separated by a space) and used asthe value for the \option{--configure-args} flag in the call to\command{R CMD INSTALL}. If the character vector has names theseare assumed to identify values for \option{--configure-args} forindividual packages. This allows one to specify settings for anentire collection of packages which will be used if any of thosepackages are to be installed. (These settings can therefore bere-used and act as default settings.)A named list can be used also to the same effect, and thatallows multi-element character strings for each packagewhich are concatenated to a single string to be used as thevalue for \option{--configure-args}.}\item{configure.vars}{(Used only for source installs.) Analogous to \code{configure.args}for flag \option{--configure-vars}, which is used to set environmentvariables for the \command{configure} run.}\item{clean}{a logical value indicating whether to add the\option{--clean} flag to the call to \command{R CMD INSTALL}.This is sometimes used to perform additional operations at the endof the package installation in addition to removing intermediate files.}\item{Ncpus}{the number of parallel processes to use for a parallelinstall of more than one source package. Values greater than oneare supported if the \command{make} command specified by\code{Sys.getenv("MAKE", "make")} accepts argument\code{-k -j \var{Ncpus}}.}\item{verbose}{a logical indicating if some \dQuote{progress report} should be given.}\item{libs_only}{a logical value: should the \option{--libs-only} option be used toinstall only additional sub-architectures for source installs? (See also\code{INSTALL_opts}.) This can also be used on Windows to installjust the DLL(s) from a binary package, e.g.\sspace{}to add 64-bitDLLs to a 32-bit install.}\item{INSTALL_opts}{an optional character vector of additional option(s) to be passed to\command{R CMD INSTALL} for a source package install. E.g.,\code{c("--html", "--no-multiarch", "--no-test-load")}.Can also be a named list of character vectors to be used asadditional options, with names the respective package names.}\item{quiet}{logical: if true, reduce the amount of output. This is \emph{not}passed to \code{\link{available.packages}()} in case that is called, onpurpose.}\item{keep_outputs}{a logical: if true, keep the outputs from installing source packagesin the current working directory, with the names of the output filesthe package names with \file{.out} appended. Alternatively, acharacter string giving the directory in which to save the outputs.Ignored when installing from local files.}\item{\dots}{Arguments to be passed to \code{\link{download.file}},\code{\link{available.packages}}, or to the functions for binaryinstalls on macOS and Windows (which accept an argument \code{"lock"}:see the section on \sQuote{Locking}).}}\details{This is the main function to install packages. It takes a vector ofnames and a destination library, downloads the packages from therepositories and installs them. (If the library is omitted itdefaults to the first directory in \code{.libPaths()}, with a messageif there is more than one.) If \code{lib} is omitted or is of lengthone and is not a (group) writable directory, in interactive use thecode offers to create a personal library tree (the first element of\code{Sys.getenv("R_LIBS_USER")}) and install there.Detection of a writable directory is problematic on Windows: see the\sQuote{Note} section.For installs from a repository an attempt is made to install thepackages in an order that respects their dependencies. This doesassume that all the entries in \code{lib} are on the default librarypath for installs (set by environment variable \env{R_LIBS}).You are advised to run \code{update.packages} before\code{install.packages} to ensure that any already installeddependencies have their latest versions.}\value{Invisible \code{NULL}.}\section{Binary packages}{This section applies only to platforms where binary packages areavailable: Windows and CRAN builds for macOS.\R packages are primarily distributed as \emph{source} packages, but\emph{binary} packages (a packaging up of the installed package) arealso supported, and the type most commonly used on Windows and by theCRAN builds for macOS. This function can install either type, either bydownloading a file from a repository or from a local file.Possible values of \code{type} are (currently) \code{"source"},\code{"mac.binary"}, and\code{"win.binary"}: the appropriate binary type where supported canalso be selected as \code{"binary"}.For a binary install from a repository, the function checks for theavailability of a source package on the same repository, and reportsif the source package has a later version, or is available but nobinary version is. This check can be suppressed by using\preformatted{ options(install.packages.check.source = "no")}and should be if there is a partial repository containing only binaryfiles.An alternative (and the current default) is \code{"both"} which means\sQuote{use binary if available and current, otherwise trysource}. The action if there are source packages which are preferredbut may contain code which needs to be compiled is controlled by\code{\link{getOption}("install.packages.compile.from.source")}.\code{type = "both"} will be silently changed to \code{"binary"} ifeither \code{contriburl} or \code{available} is specified.Using packages with \code{type = "source"} always works provided thepackage contains no C/C++/Fortran code that needs compilation.Otherwise,\describe{\item{on Windows,}{you will need to have installed the Rtoolscollection as described in the \sQuote{R for Windows FAQ} \emph{and}you must have the \env{PATH} environment variable set up as requiredby Rtools.For a 32/64-bit installation of \R on Windows, a small minority ofpackages with compiled code need either \code{INSTALL_opts ="--force-biarch"} or \code{INSTALL_opts = "--merge-multiarch"} for asource installation. (It is safe to always set the latter wheninstalling from a repository or tarballs, although it will be a littleslower.)When installing a package on Windows, \code{install.packages} will abortthe install if it detects that the package is already installed and iscurrently in use. In some circumstances (e.g., multiple instances of\R running at the same time and sharing a library) it will not detect aproblem, but the installation may fail as Windows locks files in use.}\item{On Unix-alikes,}{when the package contains C/C++/Fortran codethat needs compilation, suitable compilers and related tools needto be installed. On macOS you need to have installed the\sQuote{Command-line tools for Xcode} (see the\sQuote{R Installation and Administration} manual) and if neededby the package a Fortran compiler, and have them in your path.}}}\section{Locking}{There are various options for locking: these differ between source andbinary installs.By default for a source install, the library directory is\sQuote{locked} by creating a directory \file{00LOCK} within it. Thishas two purposes: it prevents any other process installing into thatlibrary concurrently, and is used to store any previous version of thepackage to restore on error. A finer-grained locking is provided bythe option \option{--pkglock} which creates a separate lock for eachpackage: this allows enough freedom for parallelinstallation. Per-package locking is the default when installing asingle package, and for multiple packages when \code{Ncpus > 1L}.Finally locking (and restoration on error) can be suppressed by\option{--no-lock}.% and also options(install.lock = FALSE) in an \R startup file.For a macOS binary install, no locking is done by default. Settingargument \code{lock} to \code{TRUE} (it defaults to the value of\code{\link{getOption}("install.lock", FALSE)}) will use per-directorylocking as described for source installs. For Windows binary install,per-directory locking is used by default (\code{lock} defaults to thevalue of \code{\link{getOption}("install.lock", TRUE)}). If the value is\code{"pkglock"} per-package locking will be used.If package locking is used on Windows with \code{libs_only = TRUE} andthe installation fails, the package will be restored to its previousstate.Note that it is possible for the package installation to fail so badlythat the lock directory is not removed: this inhibits any furtherinstalls to the library directory (or for \code{--pkglock}, of thepackage) until the lock directory is removed manually.}\section{Parallel installs}{Parallel installs are attempted if \code{pkgs} has length greater thanone and \code{Ncpus > 1}. It makes use of a parallel \command{make},so the \code{make} specified (default \command{make}) when \R wasbuilt must be capable of supporting \code{make -j \var{n}}: GNU make,\command{dmake} and \command{pmake} do, but Solaris \command{make} andolder FreeBSD \command{make} do not: if necessary environment variable\env{MAKE} can be set for the current session to select a suitable\command{make}.\code{install.packages} needs to be able to compute all thedependencies of \code{pkgs} from \code{available}, including if oneelement of \code{pkgs} depends indirectly on another. This means thatif for example you are installing \acronym{CRAN} packages which dependon Bioconductor packages which in turn depend on \acronym{CRAN}packages, \code{available} needs to cover both \acronym{CRAN} andBioconductor packages.}\section{Timeouts}{A limit on the elapsed time for each call to \command{R CMD INSTALL}(so for source installs) can be set \emph{via} environment variable\env{_R_INSTALL_PACKAGES_ELAPSED_TIMEOUT_}: in seconds (or in minutesor hours with optional suffix \samp{m} or \samp{h}, suffix \samp{s}being allowed for the default seconds) with \code{0} meaning no limit.For non-parallel installs this is implemented \emph{via} the\code{timeout} argument of \code{\link{system2}}: for parallelinstalls \emph{via} the OS's \command{timeout} command. (The onetested is from GNU \pkg{coreutils}, commonly available on Linux butnot other Unix-alikes. If no such command is available the timeoutrequest is ignored, with a warning. On Windows, one needs to specifya suitable \command{timeout} command via environment variable\env{R_TIMEOUT}, because \file{c:/Windows/system32/timeout.exe} isnot.) For parallel installs a\samp{Error 124} message from \command{make} indicates that timeoutoccurred.Timeouts during installation might leave lock directories behind andnot restore previous versions.}\section{Version requirements on source installs}{If you are not running an up-to-date version of \R you may see amessage like\preformatted{package 'RODBC' is not available (for R version 3.5.3)}One possibility is that the package is not available in any of theselected repositories; another is that is available but only forcurrent or recent versions of \R{}. For \acronym{CRAN} packages takea look at the package's CRAN page (e.g.,\url{https://cran.r-project.org/package=RODBC}). If that indicates inthe \samp{Depends} field a dependence on a later version of \R youwill need to look in the \samp{Old sources} section and select the URLof a version of comparable age to your \R. Then you can supply thatURL as the first argument of \code{install.packages()}: you mayneed to first manually install its dependencies.For other repositories, using \code{available.packages(filters ="OS_type")[\var{pkgname}, ]} will show if the package is availablefor any \R version (for your OS).}\note{\describe{\item{On Unix-alikes:}{Some binary distributions of \R have \code{INSTALL} in a separatebundle, e.g.\sspace{}an \code{R-devel} RPM. \code{install.packages} willgive an error if called with \code{type = "source"} on such a system.Some binary Linux distributions of \R can be installed on a machinewithout the tools needed to install packages: a possible remedy is todo a complete install of \R which should bring in all those tools asdependencies.}\item{On Windows:}{\code{install.packages} tries to detect if you have write permissionon the library directories specified, but Windows reports unreliably.If there is only one library directory (the default), \R tries tofind out by creating a test directory, but even this need not be thewhole story: you may have permission to write in a library directorybut lack permission to write binary files (such as \file{.dll} files)there. See the \sQuote{R for Windows FAQ} for workarounds.}}}\seealso{\code{\link{update.packages}},\code{\link{available.packages}},\code{\link{download.packages}},\code{\link{installed.packages}},\code{\link{contrib.url}}.See \code{\link{download.file}} for how to handle proxies andother options to monitor file transfers.\code{\link{untar}} for manually unpacking source package tarballs.\code{\link{INSTALL}}, \code{\link{REMOVE}}, \code{\link{remove.packages}},\code{\link{library}}, \code{\link{.packages}}, \code{\link{read.dcf}}The \sQuote{R Installation and Administration} manual for how toset up a repository.}\examples{\dontrun{## 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"))}}\keyword{utilities}