Learn R Programming

tools (version 3.6.1)

write_PACKAGES: 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.

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.

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".

See Also

See read.dcf and write.dcf for reading DESCRIPTION files and writing the PACKAGES and PACKAGES.gz files. See update_PACKAGES for efficiently updating existing PACKAGES and PACKAGES.gz files.

Examples

Run this code
# NOT RUN {
write_PACKAGES("c:/myFolder/myRepository")  # on Windows
write_PACKAGES("/pub/RWin/bin/windows/contrib/2.9",
               type = "win.binary")  # on Linux
# }

Run the code above in your browser using DataLab