Rev 41151 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed
\name{update.packages}\alias{update.packages}\alias{available.packages}\alias{old.packages}\alias{new.packages}\alias{download.packages}\alias{install.packages}\alias{contrib.url}\title{Download Packages from CRAN-like repositories}\description{These functions can be used to automatically compare the versionnumbers of installed packages with the newest available version onthe repositories and update outdated packages on the fly.}\usage{update.packages(lib.loc = NULL, repos = getOption("repos"),contriburl = contrib.url(repos, type),method, instlib = NULL, ask = TRUE, available = NULL,\dots, checkBuilt = FALSE,type = getOption("pkgType"))available.packages(contriburl = contrib.url(getOption("repos")),method, fields = NULL)old.packages(lib.loc = NULL, repos = getOption("repos"),contriburl = contrib.url(repos),method, available = NULL, checkBuilt = FALSE)new.packages(lib.loc = NULL, repos = getOption("repos"),contriburl = contrib.url(repos, type),method, available = NULL, ask = FALSE, \dots,type = getOption("pkgType"))download.packages(pkgs, destdir, available = NULL,repos = getOption("repos"),contriburl = contrib.url(repos, type),method, type = getOption("pkgType"))install.packages(pkgs, lib, repos = getOption("repos"),contriburl = contrib.url(repos, type),method, available = NULL, destdir = NULL,installWithVers = FALSE, dependencies = NA,type = getOption("pkgType"),configure.args = character(0),clean = FALSE)contrib.url(repos, type = getOption("pkgType"))}\arguments{\item{lib.loc}{character vector describing the location of Rlibrary trees to search through (and update packages therein).}\item{repos}{character vector, the base URL(s) of the repositoriesto use, i.e., the URL of the CRAN master such as\code{"http://cran.r-project.org"} or its Statlib mirror,\code{"http://lib.stat.cmu.edu/R/CRAN"}.#ifdef unixCan be \code{NULL} to install from local \file{.tar.gz} files.#endif#ifdef windowsCan be \code{NULL} to install from local \file{.zip} files.#endif}\item{contriburl}{URL(s) of the contrib sections of therepositories. Use this argument only if your repository mirror isincomplete, e.g., because you burned only the \file{contrib} section on aCD. Overrides argument \code{repos}.#ifdef unixCan also be \code{NULL} to install from local \file{.tar.gz} files.#endif#ifdef windowsCan also be \code{NULL} to install from local \file{.zip} files.#endif}\item{method}{Download method, see \code{\link{download.file}}.}\item{pkgs}{character vector of the short names of packages/bundles whosecurrent versions should be downloaded from the repositories.If \code{repos = NULL}, a character vector of file paths of#ifdef windows\file{.zip} files.#endif#ifdef unix\file{.tar.gz} files. These can be source archives or binarypackage/bundle archive files (as created by \code{R CMD build --binary}).Tilde-expansion will be done on the file paths.#endifIf this is a zero-length character vector, a listbox of availablepackages (including those contained in bundles) is presented wherepossible.}\item{destdir}{directory where downloaded packages are stored.}\item{available}{an object listing packages available at the repositoriesas returned by \code{available.packages}.}\item{lib}{character vector giving the library directories where toinstall the packages. Recycled as needed. If missing, defaults to\code{\link{.libPaths}()[1]}.}\item{ask}{logical indicating whether to ask user before packagesare actually downloaded and installed, or the character string\code{"graphics"}, which brings up a widget to allow the user to(de-)select from the list of packages which could be updated. Thelatter only works on systems with a GUI version of\code{\link{select.list}}, and is otherwise equivalent to \code{ask= TRUE}.}\item{installWithVers}{If \code{TRUE}, will invoke the install of thepackage such that it can be referenced by package version.}\item{checkBuilt}{If \code{TRUE}, a package built under an earlierminor version of \R is considered to be \sQuote{old}.}\item{instlib}{character string giving the library directory where toinstall the packages.}\item{dependencies}{logical indicating to also install uninstalledpackages on which these packages depend/suggest/import(and so on recursively). Not used if \code{repos = NULL}.Can also be a character vector, a subset of\code{c("Depends", "Imports", "Suggests")}.Only supported if \code{lib} is of length one (or missing),so it is unambiguous where to install the dependent packages.The default, \code{NA}, means \code{c("Depends", "Imports")} if\code{lib} is unambiguous, and \code{FALSE} otherwise.}\item{configure.args}{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 usedas the value for the \code{--configure-args}flag in the call to \code{R CMD INSTALL}.If the character vector has names, these are assumed to identifyvalues for \code{--configure-args} for individual packages.This allows one to specify settings for an entire collection of packageswhich will be used if any of those packages are installed.These settings can therefore be reused 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 \code{--configure-args}.}\item{\dots}{(for \code{update.packages}). Arguments such as \code{destdir},\code{installWithVers} and \code{dependencies} to be passed to\code{install.packages}.(for \code{new.packages}). Arguments such as \code{destdir}and \code{dependencies} to be passed to \code{install.packages}.}\item{type}{character, indicating the type of package to download andinstall.#ifdef unixPossible values are \code{"source"} (the default except under theCRAN Mac OS X build), \code{"mac.binary"} and \code{"win.binary"}(which can be downloaded but not installed).#endif#ifdef windowsPossible values are \code{"win.binary"} (the default) and\code{"source"} (for which suitable tools need to be installed: seethe \sQuote{rw-FAQ}). Value \code{"mac.binary"} can be used toexplore and download Mac OS X binaries.#endif}\item{clean}{a logical value indicating whether to specifyto add the \code{--clean} flag to the call to \code{R CMD INSTALL}.This is sometimes used to perform additional operations at the endof the package installation in addition to removing intermediate files.}\item{fields}{a character vector giving the fields to extract fromthe \code{PACKAGES} file(s) in addition to the default ones, or\code{NULL} (default). Unavailable fields result in \code{NA}values.}}\details{All of these functions work with the names of a package or bundle (andnot the component packages of a bundle, except for\code{install.packages} if the repository provides the necessaryinformation).\code{available.packages} returns a matrix of details corresponding topackages/bundles currently available at one or more repositories. Thecurrent list of packages is downloaded over the internet (or copiedfrom a local mirror). It returns only packages whose versionrequirements are met by the running version of \R.\code{old.packages} compares the information from\code{available.packages} with that from\code{\link{installed.packages}} and reports installedpackages/bundles that have newer versions on the repositories or, if\code{checkBuilt = TRUE}, that were built under an earlier minorversion of \R (for example built under 2.0.x when running \R 2.1.1).#ifdef windows(There is no check that the version on the repository was built underthe current minor version of \R, but it is advertised as beingsuitable for this version.)#endif\code{new.packages} does the same comparison but reports uninstalledpackages/bundles that are available at the repositories. It will alsogive warnings about incompletely installed bundles (provided theinformation is available) and bundles whose contents has changed.If \code{ask != FALSE} it asks which packages should be installedin the first element of \code{lib.loc}. NB: versioned installs arenot installs of a named package.\code{download.packages} takes a list of package/bundle names and adestination directory, downloads the newest versions and saves them in\code{destdir}. If the list of available packages is not given asargument, it is obtained from repositories. If a repository is local,i.e., the URL starts with \code{"file:"}, then the packages are notdownloaded but used directly. (Both \code{"file:"} and\code{"file:///"} are allowed as prefixes to a file path, the latterfor an absolute file path.)The main function of the set is \code{update.packages}. First a listof all packages/bundles found in \code{lib.loc} is created andcompared with those available at the repositories. If \code{ask =TRUE} (the default) packages/bundles with a newer version arereported and for each one the user can specify if it should beupdated.#ifdef unixIf so, the package sources are downloaded from the repositories andinstalled in the respective library path (or \code{instlib}if specified) using the \R \code{\link{INSTALL}} mechanism.#endif#ifdef windowsIf so, the pre-compiled packages are downloaded from the repositoriesand installed in the respective library path (or \code{instlib} ifspecified).#endif\code{install.packages} can be used to install newpackages/bundles. It takes a vector of names and a destinationlibrary, downloads the packages from the repositories and installsthem. (If the library is omitted it defaults to the first directoryin \code{.libPaths()}, with a warning if there is more than one.) If\code{lib} is omitted or is of length one and is not a (group)writeable directory, the code offers to create a personal library tree(the first element of \code{Sys.getenv("R_LIBS_USER")} and installthere.#ifdef windowsDetection of a writeable directory is problematic on Windows: see theWarning section.#endif% The first argument can be an unquoted name, as in% \code{install.packages(nlme)}.#ifdef windowsArgument \code{pkgs} can also be a character vector of file names ofzip files if \code{repos = NULL}. The zip files are then unpacked directly.#endif#ifdef unixAn attempt is made to install the packages in an order that respectstheir dependencies. This does assume that all the entries in\code{lib} are on the default library path for installs (set by\code{R_LIBS}).#endif\code{contrib.url} adds the appropriate type-specific path within arepository to each URL in \code{repos}.For \code{install.packages}, \code{destdir}is the directory to which packages will be downloaded. If it is\code{NULL} (the default) a directory \code{downloaded_packages} ofthe session temporary directory will be used (and the files will bedeleted at the end of the session).If \code{repos} or \code{contriburl} is a vector of length greater thanone, the newest version of the package compatible with this version of \Ris fetched from the first repository on the list within which it is found.}\value{For \code{available.packages}, a matrixwith one row per package/bundle, row names the package names andcolumn names \code{"Package"}, \code{"Version"}, \code{"Priority"},\code{"Bundle"}, \code{"Depends"}, \code{"Imports"}, \code{"Suggests"}\code{"Contains"} and \code{"Repository"}. Additional columns canbe specified using the \code{fields} argument.For \code{old.packages}, \code{NULL} or a matrix with one row perpackage/bundle, row names the package names and column names\code{"Package"}, \code{"LibPath"}, \code{"Installed"} (the version),\code{"Built"} (the version built under), \code{"ReposVer"} and\code{"Repository"}.For \code{new.packages} a character vector of package/bundle names,\emph{after} any have been installed.For \code{download.packages}, a two-column matrix of names anddestination file names, for those packages/bundles successfullydownloaded. If packages are not available or there is a problem withthe download, suitable warnings are given.\code{install.packages} and \code{update.packages} have no return value.}\section{Warning}{Take care when using \code{dependencies} with \code{update.packages},for it is unclear where new dependencies should be installed. Thecurrent implementation will only allow it if all the packages to beupdated are in a single library, when that library will be used.}#ifdef unix\note{Some binary distributions of \R have \code{INSTALL} in a separatebundle, e.g. an \code{R-devel} RPM. \code{install.packages} willgive an error if called on such a system.}#endif#ifdef windows\note{\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 even tries tofind out by creating a test directory, but even this need not be thewhole story. Under Windows Vista you may have permission to write ina library directory but lack permission to write binary files (such as\file{.chm} and \file{.dll} files) there. See the \emph{R for WindowsFAQ} for workarounds.}#endif\seealso{\code{\link{installed.packages}}, \code{\link{remove.packages}}See \code{\link{download.file}} for how to handle proxies andother options to monitor file transfers.\code{\link{INSTALL}}, \code{\link{REMOVE}},\code{\link{library}}, \code{\link{.packages}}, \code{\link{read.dcf}}}\examples{\dontrun{install.packages(c("XML_0.99-5.tar.gz","../../Interfaces/Perl/RSPerl_0.8-0.tar.gz"),repos = NULL,configure.args = c(XML = '--with-xml-config=xml-config',RSPerl = "--with-modules='IO Fcntl'"))}}\keyword{utilities}