| % File src/library/utils/man/install.packages.Rd |
| % Part of the R package, https://www.R-project.org |
| % Copyright 1995-2018 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 from |
| local 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 whose |
| current 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 of |
| packages. (\code{http://} and \code{file://} URLs are also accepted |
| and the files will be downloaded and installed from local copies.) |
| Source directories or file paths or URLs of archives may be |
| specified with \code{type = "source"}, but some packages need |
| suitable tools installed (see the \sQuote{Details} section). |
| } |
| \item{On Unix-alikes,}{these file paths can be source directories or archives |
| or binary package archive files (as created by \command{R CMD build |
| --binary}). (\code{http://} and \code{file://} URLs are also |
| accepted and the files will be downloaded and installed from local |
| copies.) 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 of |
| available packages is presented where possible in an interactive \R |
| session. |
| } |
| \item{lib}{ |
| character vector giving the library directories where to |
| install the packages. Recycled as needed. If missing, defaults to |
| the first element of \code{\link{.libPaths}()}. |
| } |
| \item{repos}{ |
| character vector, the base URL(s) of the repositories |
| to use, e.g., the URL of a CRAN mirror such as |
| \code{"https://cloud.r-project.org"}. For more details on |
| supported 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 this |
| argument if your repository mirror is incomplete, e.g., because |
| you burned only the \file{contrib} section on a CD, or only have |
| binary packages. Overrides argument \code{repos}. |
| Incompatible with \code{type = "both"}. |
| } |
| \item{method}{ |
| download method, see \code{\link{download.file}}. Unused if |
| a 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} when |
| the 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 temporary |
| directory will be used (and the files will be deleted |
| at the end of the session). |
| } |
| \item{dependencies}{logical indicating whether to also install |
| uninstalled packages which these packages depend on/link |
| to/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. If |
| this 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}, their |
| examples, tests and vignettes (if the package author specified them |
| correctly). |
| |
| In all of these, \code{"LinkingTo"} is omitted for binary packages. |
| } |
| \item{type}{character, indicating the type of package to download and |
| install. Will be \code{"source"} except on Windows and some macOS |
| builds: 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 are |
| concatenated into a single string (separated by a space) and used as |
| the value for the \option{--configure-args} flag in the call to |
| \command{R CMD INSTALL}. If the character vector has names these |
| are assumed to identify values for \option{--configure-args} for |
| individual packages. This allows one to specify settings for an |
| entire collection of packages which will be used if any of those |
| packages are to be installed. (These settings can therefore be |
| re-used and act as default settings.) |
| |
| A named list can be used also to the same effect, and that |
| allows multi-element character strings for each package |
| which are concatenated to a single string to be used as the |
| value 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 environment |
| variables 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 end |
| of the package installation in addition to removing intermediate files. |
| } |
| \item{Ncpus}{the number of parallel processes to use for a parallel |
| install of more than one source package. Values greater than one |
| are 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 to |
| install only additional sub-architectures for source installs? (See also |
| \code{INSTALL_opts}.) This can also be used on Windows to install |
| just the DLL(s) from a binary package, e.g.\sspace{}to add 64-bit |
| DLLs 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 as |
| additional options, with names the respective package names. |
| } |
| \item{quiet}{ |
| logical: if true, reduce the amount of output. |
| } |
| \item{keep_outputs}{ |
| a logical: if true, keep the outputs from installing source packages |
| in the current working directory, with the names of the output files |
| the package names with \file{.out} appended. Alternatively, a |
| character 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}} or to the |
| functions for binary installs 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 of |
| names and a destination library, downloads the packages from the |
| repositories and installs them. (If the library is omitted it |
| defaults to the first directory in \code{.libPaths()}, with a message |
| if there is more than one.) If \code{lib} is omitted or is of length |
| one and is not a (group) writable directory, in interactive use the |
| code 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 the |
| packages in an order that respects their dependencies. This does |
| assume that all the entries in \code{lib} are on the default library |
| path 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 installed |
| dependencies have their latest versions. |
| } |
| \value{ |
| Invisible \code{NULL}. |
| } |
| \section{Binary packages}{ |
| This section applies only to platforms where binary packages are |
| available: 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) are |
| also supported, and the type most commonly used on Windows and by the |
| CRAN builds for macOS. This function can install either type, either by |
| downloading a file from a repository or from a local file. |
| |
| Possible values of \code{type} are (currently) \code{"source"}, |
| \code{"mac.binary"}, \code{"mac.binary.el-capitan"} and |
| \code{"win.binary"}: the appropriate binary type where supported can |
| also be selected as \code{"binary"}. |
| |
| For a binary install from a repository, the function checks for the |
| availability of a source package on the same repository, and reports |
| if the source package has a later version, or is available but no |
| binary 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 binary |
| files. |
| |
| An alternative (and the current default) is \code{"both"} which means |
| \sQuote{use binary if available and current, otherwise try |
| source}. The action if there are source packages which are preferred |
| but 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"} if |
| either \code{contriburl} or \code{available} is specified. |
| |
| Using packages with \code{type = "source"} always works provided the |
| package contains no C/C++/Fortran code that needs compilation. |
| Otherwise, |
| \describe{ |
| \item{on Windows}{you will need to have installed the Rtools |
| collection as described in the \sQuote{R for Windows FAQ} \emph{and} |
| you must have the \env{PATH} environment variable set up as required |
| by Rtools. |
| |
| For a 32/64-bit installation of \R on Windows, a small minority of |
| packages with compiled code need either \code{INSTALL_opts = |
| "--force-biarch"} or \code{INSTALL_opts = "--merge-multiarch"} for a |
| source installation. (It is safe to always set the latter when |
| installing from a repository or tarballs, although it will be a little |
| slower.) |
| |
| When installing a binary package, \code{install.packages} will abort |
| the install if it detects that the package is already installed and is |
| currently in use. In some circumstances (e.g., multiple instances of |
| \R running at the same time and sharing a library) it will not detect a |
| problem, but the installation may fail as Windows locks files in use. |
| } |
| \item{On Unix-alikes,}{when the package contains C/C++/Fortran code |
| that needs compilation, on macOS you need to have installed the |
| \sQuote{Command-line tools for Xcode} (see the \sQuote{R Installation |
| and Administration Manual}) and if needed by the package a Fortran |
| compiler, and have them in your path. |
| } |
| } |
| } |
| |
| \section{Locking}{ |
| There are various options for locking: these differ between source and |
| binary installs. |
| |
| By default for a source install, the library directory is |
| \sQuote{locked} by creating a directory \file{00LOCK} within it. This |
| has two purposes: it prevents any other process installing into that |
| library concurrently, and is used to store any previous version of the |
| package to restore on error. A finer-grained locking is provided by |
| the option \option{--pkglock} which creates a separate lock for each |
| package: this allows enough freedom for parallel |
| installation. Per-package locking is the default when installing a |
| single 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. Setting |
| argument \code{lock} to \code{TRUE} (it defaults to the value of |
| \code{\link{getOption}("install.lock", FALSE)}) will use per-directory |
| locking as described for source installs. For Windows binary install, |
| per-directory locking is used by default (\code{lock} defaults to the |
| value 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} and |
| the installation fails, the package will be restored to its previous |
| state. |
| |
| Note that it is possible for the package installation to fail so badly |
| that the lock directory is not removed: this inhibits any further |
| installs to the library directory (or for \code{--pkglock}, of the |
| package) until the lock directory is removed manually. |
| } |
| |
| \section{Parallel installs}{ |
| Parallel installs are attempted if \code{pkgs} has length greater than |
| one and \code{Ncpus > 1}. It makes use of a parallel \command{make}, |
| so the \code{make} specified (default \command{make}) when \R was |
| built must be capable of supporting \code{make -j \var{n}}: GNU make, |
| \command{dmake} and \command{pmake} do, but Solaris \command{make} and |
| older 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 the |
| dependencies of \code{pkgs} from \code{available}, including if one |
| element of \code{pkgs} depends indirectly on another. This means that |
| if for example you are installing \acronym{CRAN} packages which depend |
| on Bioconductor packages which in turn depend on \acronym{CRAN} |
| packages, \code{available} needs to cover both \acronym{CRAN} and |
| Bioconductor 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 minutes |
| or 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 parallel |
| installs \emph{via} the OS's \command{timeout} command. (The one |
| tested is from GNU \pkg{coreutils}, commonly available on Linux but |
| not other Unix-alikes. If no such command is available the timeout |
| request is ignored, with a warning.) For parallel installs a |
| \samp{Error 124} message from \command{make} indicates that timeout |
| occurred. |
| |
| Timeouts during installation might leave lock directories behind and |
| not restore previous versions. |
| } |
| \note{ |
| \describe{ |
| \item{On Unix-alikes:}{ |
| Some binary distributions of \R have \code{INSTALL} in a separate |
| bundle, e.g.\sspace{}an \code{R-devel} RPM. \code{install.packages} will |
| give an error if called with \code{type = "source"} on such a system. |
| |
| Some binary Linux distributions of \R can be installed on a machine |
| without the tools needed to install packages: a possible remedy is to |
| do a complete install of \R which should bring in all those tools as |
| dependencies. |
| } |
| \item{On Windows:}{ |
| \code{install.packages} tries to detect if you have write permission |
| on the library directories specified, but Windows reports unreliably. |
| If there is only one library directory (the default), \R tries to |
| find out by creating a test directory, but even this need not be the |
| whole story: you may have permission to write in a library directory |
| but 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 and |
| other 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 to |
| set 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} |