oldPackages() indicates packages which have a (suitable) later version on the repositories whereas updatePackages() offers to download and install such packages.

  path = NULL,
  repos = getOption("repos"),
  availPkgs = pkgAvail(repos = repos, type = type, Rversion = Rversion),
  availableLocal = pkgAvail(repos = path, type = type, Rversion = Rversion, quiet =
  type = "source",
  Rversion = R.version,
  quiet = FALSE

  path = NULL,
  repos = getOption("repos"),
  method = NULL,
  ask = TRUE,
  availPkgs = pkgAvail(repos = repos, type = type, Rversion = Rversion),
  oldPkgs = NULL,
  type = "source",
  Rversion = R.version,
  quiet = FALSE



Destination download path. This path is the root folder of your new repository.


URL(s) of the 'contrib' sections of the repositories, e.g. "http://cran.us.r-project.org". Passed to available.packages()


Data frame with an element called package. The package element is a vector of available packages. Defaults to reading this list from CRAN, using available.packages()


Download method, see download.file().


all packages hosted in the miniCRAN repo, as returned by pkgAvail(). A subset can be specified; currently this must be in the same (character matrix) format as returned by pkgAvail().


Possible values are (currently) "source", "mac.binary" and "win.binary": the binary types can be listed and downloaded but not installed on other platforms. Passed to download.packages().


Version of R (only used if type is not source.) Defaults to R.version, but this can be specified as any of the following formats:

  • a character string with the two digit R version, e.g. "3.1"

  • a list with components major and minor

  • the result of getRversion()

  • the result of R.version


If TRUE, suppress status messages (if any), and the progress bar during download.


logical indicating whether to ask user before packages are actually downloaded and installed. Alternatively, the value "graphics" starts an interactive widget to allow the user to (de-)select from the list of packages which could be updated or added. The latter value only works on systems with a GUI version of select.list(), and is otherwise equivalent to ask = TRUE.


if specified as non-NULL, updatePackages() only considers these packages for updating. This may be a character vector of package names or a matrix as returned by oldPackages().


oldPackages() returns a matrix with one row per package and columns for "Package", "LocalVer", "ReposVer" and "Repository". The matrix row names the package names.

updatePackages returns NULL invisibly.


These functions are based on update.packages(). However, rather than looking for locally installed packages they look for the package source and binaries in the miniCRAN repository.

See also

updatePackages(), pkgAvail().

Other update repo functions: addOldPackage(), addPackage(), checkVersions(), makeRepo()


### `oldPackages` and `updatePackages` require an existing miniCRAN repo # Specify list of packages to download revolution <- c(CRAN = getOption("minicran.mran")) pkgs <- c("foreach") pdb <- cranJuly2014 if (FALSE) { pdb <- pkgAvail(repos = revolution, type = "source") } pkgList <- pkgDep(pkgs, availPkgs = pdb, repos = revolution, type = "source", suggests = FALSE) pkgList
#> [1] "foreach" "codetools" "iterators"
if (FALSE) { # Create temporary folder for miniCRAN dir.create(pth <- file.path(tempdir(), "miniCRAN")) # create the miniCRAN directory structure but only add bin files makeRepo(pkgList, path = pth, repos = revolution, type = "source", download = FALSE) makeRepo(pkgList, path = pth, repos = revolution, type = "win.binary", download = TRUE) # download old source package version and create repo index oldVers <- data.frame(package = c("foreach", "codetools", "iterators"), version = c("1.4.0", "0.2-7", "1.0.5"), stringsAsFactors = FALSE) addOldPackage(pkgList, path = pth, repos = revolution, vers = oldVers$version, type = "source") # NOTE: older binary versions would need to be build from source # Check if updated packages are available oldPackages(path = pth, repos = revolution, type = "source") # should need update oldPackages(path = pth, repos = revolution, type = "win.binary") # should be current # Update available packages updatePackages(path = pth, repos = revolution, type = "source", ask = FALSE) # should need update updatePackages(path = pth, repos = revolution, type = "win.binary") # should be current # Delete temporary folder unlink(pth, recursive = TRUE) }