R: Generate PACKAGES Files

write_PACKAGES {tools} | R Documentation

## Generate PACKAGES Files

### Description

Generate ‘PACKAGES’, ‘PACKAGES.gz’ and ‘PACKAGES.rds’ files for a repository of source or Mac/Windows binary packages.

### Usage

    write_PACKAGES(dir = ".", fields = NULL,
                   type = c("source", "mac.binary", "win.binary"),
                   verbose = FALSE, unpacked = FALSE, subdirs = FALSE,
                   latestOnly = TRUE, addFiles = FALSE, rds_compress = "xz")

### Arguments

`dir` | Character vector describing the location of the repository (directory including source or binary packages) to generate the ‘PACKAGES’, ‘PACKAGES.gz’ and ‘PACKAGES.rds’ files from and write them to.
`fields` | a character vector giving the fields to be used in the ‘PACKAGES’, ‘PACKAGES.gz’ and ‘PACKAGES.rds’ files in addition to the default ones, or `NULL` (default). The default corresponds to the fields needed by `available.packages`: `"Package"`, `"Version"`, `"Priority"`, `"Depends"`, `"Imports"`, `"LinkingTo"`, `"Suggests"`, `"Enhances"`, `"OS_type"`, `"License"` and `"Archs"`, and those fields will always be included, plus the file name in field `"File"` if `addFile = TRUE` and the path to the subdirectory in field `"Path"` if subdirectories are used.
`type` | Type of packages: currently source ‘.tar.{gz,bz2,xz}’ archives, and macOS or Windows binary (‘.tgz’ or ‘.zip’, respectively) packages are supported. Defaults to `"win.binary"` on Windows and to `"source"` otherwise.
`verbose` | logical. Should packages be listed as they are processed?
`unpacked` | a logical indicating whether the package contents are available in unpacked form or not (default).
`subdirs` | either logical (to indicate if subdirectories should be included, recursively) or a character vector of names of subdirectories to include (which are not recursed).
`latestOnly` | logical: if multiple versions of a package are available should only the latest version be included?
`addFiles` | logical: should the filenames be included as field File in the ‘PACKAGES’ file.
`rds_compress` | The type of compression to be used for ‘PACKAGES.rds’: see `saveRDS`. The default is the one found to give maximal compression, and is as used on CRAN.

### Details

`write_PACKAGES` scans the named directory for R packages, extracts information from each package's ‘DESCRIPTION’ file, and writes this information into the ‘PACKAGES’, ‘PACKAGES.gz’ and ‘PACKAGES.rds’ files, where the first two represent the information in DCF format, and the third serializes it via `saveRDS`.

Including non-latest versions of packages is only useful if they have less constraining version requirements, so for example `latestOnly = FALSE` could be used for a source repository when foo_1.0 depends on R >= 2.15.0 but foo_0.9 is available which depends on R >= 2.11.0.

Support for repositories with subdirectories and hence for `subdirs != FALSE` depends on recording a `"Path"` field in the ‘PACKAGES’ files.

Support for more general file names (e.g., other types of compression) via a `"File"` field in the ‘PACKAGES’ files can be used by `download.packages`. If the file names are not of the standard form, use `addFiles = TRUE`.

`type = "win.binary"` uses `unz` connections to read all ‘DESCRIPTION’ files contained in the (zipped) binary packages for Windows in the given directory `dir`, and builds files ‘PACKAGES’, ‘PACKAGES.gz’ and ‘PACKAGES.rds’ files from this information.

For a remote repository there is a tradeoff between download speed and time spent by `available.packages` processing the downloaded file(s). For large repositories it is likely to be beneficial to use `rds_compress = "xz"`.

### Value

Invisibly returns the number of packages described in the resulting ‘PACKAGES’, ‘PACKAGES.gz’ and ‘PACKAGES.rds’ files. If `0`, no packages were found and no files were written.

### Note

Processing ‘.tar.gz’ archives to extract the ‘DESCRIPTION’ files is quite slow.

This function can be useful on other OSes to prepare a repository to be accessed by Windows machines, so `type = "win.binary"` should work on all OSes.

### Author(s)

Uwe Ligges and R-core.

### See Also

See `read.dcf` and `write.dcf` for reading ‘DESCRIPTION’ files and writing the ‘PACKAGES’ and ‘PACKAGES.gz’ files.

### Examples

    ## Not run:
    write_PACKAGES("c:/myFolder/myRepository")  # on Windows
    write_PACKAGES("/pub/RWin/bin/windows/contrib/2.9",
                   type = "win.binary")  # on Linux

    ## End(Not run)

[Package tools version 3.5.1 Index]