Learn R Programming

miniCRAN (version 0.2.4)

addOldPackage: Add old package versions to a miniCRAN repository.

Description

Will download and add older source package versions. Older binary versions are not normally available on CRAN and should be build from source on the platform for which they are required. As such, specifying type!="source" will likely fail as the download will not be successful.

Usage

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

Arguments

pkgs
Character vector of packages to download
path
Destination download path. This path is the root folder of your new repository.
vers
The package version to install.
repos
URL(s) of the 'contrib' sections of the repositories, e.g. "http://cran.us.r-project.org". Passed to available.packages
type
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.
Rversion
numeric version of the R system for which to fetch packages. See R_system_version.
writePACKAGES
If TRUE, calls write_PACKAGES to update the repository PACKAGES file.
deps
logical indicating whether the package dependencies should be added (default TRUE).
quiet
If TRUE, suppress status messages (if any), and the progress bar during download.

Value

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

See Also

Other update repo functions: addPackage; checkVersions; makeRepo, updateRepoIndex; oldPackages, updatePackages, updatePackages

Examples

Run this code
### `checkVersions` and `add.packages.miniCRAN` require an existing miniCRAN repo

# Specify list of packages to download
revolution <- c(CRAN="http://cran.revolutionanalytics.com")
pkgs <- c("foreach")

pdb <- cranJuly2014

pdb <- pkgAvail(repos=revolution, type="source")

pkgList <- pkgDep(pkgs, availPkgs=pdb, repos=revolution, type="source", suggests=FALSE)
pkgList

# 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="source")
  makeRepo(pkgList, path=pth, repos=revolution, type="win.binary")

  # 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) # "foreach_1.4.0.zip"     "foreach_1.4.2.zip"
  file.remove(c(pkgVersionsSrc[1], pkgVersionsBin[1]))

  # Rebuild package index after adding/removing files
  updateRepoIndex(pth, type=c("source", "win.binary"), Rversion=R.version)
  
  pkgAvail(pth, type="source")

  # Add new packages (from CRAN) to the miniCRAN repo
  addPackage("Matrix", path=pth, repos=revolution, type="source")
  addPackage("Matrix", path=pth, repos=revolution, type="win.binary")

  # Delete temporary folder
  unlink(pth, recursive=TRUE)

Run the code above in your browser using DataLab