Add packages to a miniCRAN repository.

addPackage(pkgs = NULL, path = NULL, repos = getOption("repos"),
  type = "source", Rversion = R.version, writePACKAGES = TRUE,
  deps = TRUE, quiet = FALSE)



Character vector of packages to download


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


URL(s) of the 'contrib' sections of the repositories, e.g. "". Passed to available.packages()


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, calls write_PACKAGES() to update the repository PACKAGES file.


logical indicating whether the package dependencies should be added (default TRUE).


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


Installs the packages, rebuilds the package index, and invisibly returns the number of packages written to the index files.

See also

Other update repo functions: addOldPackage, checkVersions, makeRepo, updatePackages


### `checkVersions` and `add.packages.miniCRAN` require an existing miniCRAN repo # Specify list of packages to download revolution <- c(CRAN = getOption("miniCRAN.mran")) pkgs <- c("foreach") pkgTypes <- c("source", "win.binary") pdb <- cranJuly2014
# NOT RUN { pdb <- pkgAvail(repos = revolution, type = "source") # }
pkgList <- pkgDep(pkgs, availPkgs = pdb, repos = revolution, type = "source", suggests = FALSE) pkgList
#> [1] "foreach" "codetools" "iterators"
# NOT RUN { # Create temporary folder for miniCRAN dir.create(pth <- file.path(tempdir(), "miniCRAN")) # Make repo for source and win.binary makeRepo(pkgList, path = pth, repos = revolution, type = pkgTypes) # Add other versions of a package (and assume these were added previously) oldVers <- data.frame(package = c("foreach", "codetools", "iterators"), version = c("1.4.0", "0.2-7", "1.0.5"), stringsAsFactors = FALSE) pkgs <- oldVers$package addOldPackage(pkgs, path = pth, vers = oldVers$version, repos = revolution, type = "source") # NOTE: older binary versions would need to be build from source # List package versions in the miniCRAN repo (produces warning about duplicates) pkgVersionsSrc <- checkVersions(pkgs, path = pth, type = "source") pkgVersionsBin <- checkVersions(pkgs, path = pth, type = "win.binary") # After inspecting package versions, remove old versions basename(pkgVersionsSrc) # "foreach_1.4.0.tar.gz" "foreach_1.4.2.tar.gz" basename(pkgVersionsBin) # "" "" file.remove(c(pkgVersionsSrc[1], pkgVersionsBin[1])) # Rebuild package index after adding/removing files updateRepoIndex(pth, type = pkgTypes, Rversion = R.version) pkgAvail(pth, type = "source") # Add new packages (from CRAN) to the miniCRAN repo addPackage("Matrix", path = pth, repos = revolution, type = pkgTypes) # Delete temporary folder unlink(pth, recursive = TRUE) # }