The Package Manager configuration file is located at /etc/rstudio-pm/rstudio-pm.gcfg. This configuration is read at startup and controls the operation of the service.
An example configuration file that includes all the available configuration settings along with their defaults is installed at /etc/rstudio-pm/rstudio-pm.gcfg.defaults.
The Package Manager configuration file uses the gcfg (Go Config) format, which is derived from the Git Config format.
Here is an example of that format showing the different property types:
; Comment[BooleanExamples]property1=trueproperty2=offproperty3=1[IntegerExamples]Property1=42Property2=-123[DecimalExamples]Property1=3.14Property2=7.Property3=2Property4=.217[StringExamples]Property1=simpleProperty2="quoted string"Property3="escaped \"quote\" string"[MultiStringExamples]ListProperty=blackListProperty=blueListProperty=green[DurationExamples]Property1=1000000000Property2=500msProperty3=1m15s; comment with a property
Comments always start with a semi-colon (;) or hash (#) and continue to the end of the line. Comments can be on lines by themselves or on a line with a property or section definition.
Configuration sections always begin with the name of the section bounded by square brackets. A section may appear multiple times and are additive with the last value for any property being retained. The following two configuration examples are equivalent.
If a property happens to to be given more than once, only the last value is retained. The "multi" properties are an exception to this rule; multiple entries are aggregated into a list.
If Color is a multi-string property, both the "black" and "blue" values are used. If Animal is a normal string property, only the value "dog" is retained.
Configuration properties all have one of the following types:
string
A sequence of characters. The value is taken as all characters from the first non-whitespace character after equal sign to the last non-whitespace character before the end-of-line or start of a comment. Double-quotes (") are supported, but usually unnecessary. A literal double-quote MUST be escaped and quoted itself like QuotedValue = "J.R. \"Bob\" Dobbs". Strings containing the comment characters ; and # also need to be quoted.
A potentially encrypted sequence of characters. The rules on how the value is taken from the file are the same as for the regular string type. But to generate an encrypted string one needs to enter the plain text value as-is (no quotes or escaping) in the command rspm encrypt which will output the encrypted version of the entered value. Encrypted values are tied to the Package Manager installation that generated them in most cases. For convenience and backwards compatibility, plain text values are accepted. However, in this case Package Manager will log a message on startup saying that the value should have been encrypted. See the Configuration Encryption page for more information.
multi-string
A property that takes multiple string values. The property name is listed with each individual input value. For example, providing Color = black and Color = blue results in two separate values. Defaults for multi-string configuration properties are not overridden when additional values are configured.
boolean
A truth value. The values true, yes, on, and 1 are interpreted as true. The values false, no, off, and 0 are interpreted as false.
integer
An integral value.
bytesize
A value specifying the data size. When provided as a raw number, the value is interpreted as bytes. Data size values can also be specified as a sequence of decimal numbers, each with optional fraction and unit suffix such as "10MB" for 10 megabytes, "2000" for 2000 bytes, or "1GB" for 1 gigabytes.
Valid data size units are B (bytes), KB (kilobyte), MB (megabyte), GB (gigabyte), and TB (TB).
decimal
A numeric value with an optional fractional component. Values with and without a decimal point are allowed.
duration
A value specifying a length of time. When provided as a raw number, the value is interpreted as nanoseconds. Duration values can also be specified as a sequence of decimal numbers, each with optional fraction and unit suffix, such as 300ms, 1.5h, or 1m30s.
Valid time units are ns (nanoseconds), us (microseconds), ms (milliseconds), s (seconds), m (minutes), h (hours), and d (days).
version
A string representing a version. A version may have one to four numeric components, separated by periods or hyphens. Examples include 2, 2.5, 2.5.6, 2.5.6.1, and 2.5-6-11.
Each configuration property documented in this appendix includes its description, data type, and default value.
Some properties are marked as "reloadable". Sending a HUP signal to the Package Manager process causes the on-disk configuration to be reread. The server is reconfigured with the latest values of these reloadable properties. See Stopping and Starting for details about sending a HUP signal to your Package Manager process.
Note
Use a HUP signal when your configuration changes are limited to properties marked as reloadable. Perform a full restart of Package Manager when changing other properties.
A HUP signal only reloads configuration settings that have explicitly changed. Commenting out a setting will not affect the configuration when using the HUP signal. If you have commented out a setting instead of changing the setting value, restart the Package Manager service instead of using the HUP signal.
The Server section contains configuration properties which apply across the whole of Package Manager and are not appropriate for the other sections, which are generally narrower.
The properties which follow all must appear after [Server] in the configuration file.
The directory for temporary files and directories used by R, Python, and runtime processes. It cannot be a subdirectory of Server.DataDir. If neither the TMPDIR environment variable nor this setting are configured, /tmp will be used as the default.
The amount of time we wait for files to appear in the cache directory after the database reports they are available. The default of 65 seconds should accommodate the NFS default directory caching limit of 60 seconds
A public URL for this Posit Package Manager server in the format of http(s)://[HOST:PORT]. If Package Manager is deployed behind an HTTP proxy, provide the URL as seen by users through the proxy. It must be configured if Package Manager is served from a subdirectory like /packagemanager/. Otherwise, it is optional and may be left blank or unset. If set, it will be used as the public URL for the PyPI package index pages, Server API documentation, and rspm url create command.
By default, Package Manager sets the Server HTTP header to something like Posit Package Manager v1.2.3. This setting allows you to override that value.
Custom HTTP header that should be added to responses from Package Manager in the format of key: value. The left side of the first colon in the string will become the header name; everything after the first colon will be the header value. Both will be trimmed of leading/trailing whitespace. This will always add a new header with the specified value; it will never override a header that Package Manager would otherwise have set. Multiple definitions can be used to provide multiple custom headers.
Deprecated. The filepath of the encryption key used to store sensitive data at rest. Must be 512 bits (64 bytes) and file mode must be 0600. For cluster environments every server must have a copy of the same key file.
Retain source packages and binaries in persistent storage. If set to auto, packages will be retained in non-air-gapped environments. Valid values include auto, yes, and no.
The storage class(es) for which the eviction is enabled. Use a comma-separated list, including any of the following: binaries,bioconductor,cache,cran,metrics,pypi
The gzip compression level (1-9) to use when rewriting local packages. Lower values will result in better performance, but will require more disk space.
Limits the maximum number of results that can be returned from API endpoints that support a _limit parameter. When zero, there is no limit. Please consider performance implications before raising this limit.
The distributions for which to enable binary support. Use all to enable all distributions or a comma-separated list, such as: focal, jammy, noble, bullseye, bookworm, centos8, rhel9, opensuse155, opensuse156, macos, windows. Run rspm list distributions to list all valid distributions.
The HTTP section contains configuration properties which control the ability of Package Manager to listen for HTTP requests. Package Manager must be configured to listen for either HTTP or HTTPS requests (allowing both is acceptable).
These properties must appear after [HTTP] in the configuration file.
Posit Package Manager will listen on this network address for HTTP connections. The network address can be of the form :80 or 192.168.0.1:80. Either HTTP.Listen or HTTPS.Listen is required.
Posit Package Manager will mark cookies secure on its unsecured connection. This option should be used when Posit Package Manager is behind a secure proxy.
The HTTPS section contains configuration properties which control the ability of Package Manager to listen for HTTPS requests. Package Manager must be configured to listen for either HTTP or HTTPS requests (allowing both is acceptable).
These properties must appear after [HTTPS] in the configuration file.
Posit Package Manager will listen on this network address for HTTPS connections. The network address can be of the form :443 or 192.168.0.1:443. Either HTTP.Listen or HTTPS.Listen is required.
Path to a TLS certificate file. If the certificate is signed by a certificate authority, the certificate file should be the concatenation of the server's certificate followed by the CA's certificate. Must be paired with HTTPS.Key.
Advertises to all visitors that this server should only ever be hosted securely via HTTPS. WARNING: if this is set to true -- even temporarily -- visitors may be permanently denied access to your server over an unsecured (non-HTTPS) protocol. This sets the secure flag on all session cookies and adds a Strict-Transport-Security HTTP header with a value of 30 days.
The HttpRedirect section contains configuration properties which control the ability of Package Manager to listen for HTTP requests and then redirect all traffic to some alternate location. This is useful when paired with an HTTPS.Listen configuration.
These properties must appear after [HttpRedirect] in the configuration file.
Posit Package Manager will listen on this network address for HTTP connection and redirect to either the HttpRedirect.Target or Server.Address target location. The network address can be of the form :8080 or 192.168.0.1:8080. Useful when you wish all requests to be served over HTTPS and send users to that location should they accidentally visit via an HTTP URL. Must be paired with either HttpRedirect.Target or Server.Address.
The target for redirects when users visit the HttpRedirect.Listen HTTP service. Server.Address is used as a redirect target if this property is not specified.
By default, branch builds will append .0.0.0.[timestamp] to the package version to ensure uniqueness. Set this to true to use the version in the DESCRIPTION file and replace any existing packages with the same version.
By default, Git tags versions must match the DESCRIPTION file version. Set this to true to use the version in the DESCRIPTION file regardless of the Git tag.
When set to true, the Git build process will attempt to build vignettes for R packages. If the vignette build fails, the process will automatically fallback to using the --no-build-vignettes option.
By default, Python git builders will pull package dependencies from PyPI. Set this option to a PyPI simple index URL to pull dependencies from a different location.
When Package Manager loses its lease, it will begin automatically attempting to acquire a lease by RemoteRetryFrequency. Use a value of 0 to disable retries.
The Manifest section contains configuration properties related to the general Manifest source configurations (CRAN, Bioconductor, PyPI) in Package Manager.
Supports 307 redirects to the underlying package repositories. This enables the ability for users to download packages directly from the URL location without passing through Package Manager and caching locally. This can both significantly improve package serving performance and reduce storage usage. The end user's system needs outbound internet access to the URL location (by default this is the Posit Package Service, http://rspm-sync.rstudio.com). This is not always feasible depending on the network configuration. Redirects are supported by both R's install.packages() and the Python's pip by default, but if using a non-default download method in R such as curl, you will have to add the download options to follow redirects for that particular method.
Bioconductor versions that are created automatically when syncing. When unset, all supported Bioconductor versions are created automatically when syncing if a Bioconductor repo exists.
The maximum number of database connections that should be retained after they become idle. If this value is less-than or equal-to zero, no idle connections are retained.
The maximum number of open connections to the database. If this value is less-than or equal-to zero, then there is no limit to the number of open connections.
The maximum amount of time a connection to the database may be reused. If this value is less-than or equal-to zero, then connections are reused forever.
The maximum amount of time to wait for a response while connecting to the database. If this value is less-than or equal-to zero, then connections can hang forever.
The directory containing the Posit Package Manager database. Must reference a directory on the local filesystem and not on a networked volume like NFS.
When enabled, allows using SQLite on an NFS mount. Should only be used in rare circumstances since using SQLite on an NFS mount can lead to data corruption.
The PostgresPool section contains configuration properties which control the location of and how Package Manager interacts with a special postgres connection pool that is used for the following special purposes:
Persistent Storage - When configured to use PostgreSQL for persistent storage (caching, etc.), the PostgreSQL Pool will be used for interactions with Postgres Large Object storage.
Notifications - An Package Manager cluster uses PostgreSQL NOTIFY/LISTEN messaging to support intra-node communication. The PostgreSQL Pool will be used for this feature.
Note
We have limitations on the minimum number of PostgresPool.MaxOpenConnections. We use connections for heartbeating nodes, sweeping nodes where heartbeats have expired, enumerating nodes, and for actually sending notifications. Those operations occasionally use connections, too.
These properties must appear after [PostgresPool] in the configuration file.
The maximum number of open connections to the Postgres connection pool. This needs to be either greater than or equal to 10, or 0 for unlimited open connections.
The Proxy section contains configuration properties which allow the Package Manager to use an outbound proxy server. The URL configured here will be used for all HTTP requests and HTTPS requests.
/etc/rstudio-pm/rstudio-pm.gcfg
[Proxy]URL=127.0.0.1:80
These properties must appear after [Proxy] in the configuration file.
The Storage configuration section contains properties that control whether variable data should be stored on a local file system or S3. You can configure the storage destination for each class of data. By default, each storage class defaults to file, but you can configure any storage class for S3.
/etc/rstudio-pm/rstudio-pm.gcfg
[Storage]; Each class defaults to `file`; Cache = file; Metrics = file;; You can override the destination to use S3Metrics=s3Packages=s3CRAN=s3Bioconductor=s3Binaries=s3PyPI=s3
The StorageAudit section allows you to configure auditing which can be exported using the metrics endpoint. This can also be used in combination with the StorageAlerts section to enable alerts based on usage thresholds.
StorageAudit is enabled by default, but may be disabled if you do not require this functionality.
The StorageAlerts section allows customizable alerting thresholds based on a fixed size or a percentage basis. Use [StorageAlerts] to set default values or use FileStorage classes to override a specific storage location. For example, [StorageAlerts "cran"]
Alerting is enabled by default, but it can be customized or disabled completely depending on your needs. Alerting is currently supported only for FileStorage classes.
The alerting process will recursively check the free and used size of the disk on which the specified directory is mounted. For example, if your FileStorage is configured as follows, the alerting process will scan the disk on which /path/to/cran resides and report on the results.
[StorageAlerts]; Enable UI alerts of type 'raw', 'safe', 'name' or disable with 'none'; UIMessageType = safe;; Set a default for each underlying storage class.; Can be a fixed size such as "10GB" or a percent like "90%"; Disable by using 0, 0GB, 0% or not setting.;; The default alert threshold is 90%. Alerts will shown when storage usage; exceeds this value.; Threshold = 90%;; Optionally specify thresholds for individual FileStorage classes.; These function as overrides for the default. Disable using; one of the "0" values described above.;; [StorageAlerts "cache"]; Threshold = 10GB;; [StorageAlerts "cran"]; Threshold = 75%;; [StorageAlerts "packages"]; Threshold = 0
The default storage alerting threshold. Alerts will shown when storage usage exceeds this value. May be either a percentage or a size. Must end with a '%' or a size 'GB'. For example 90% or 200GB. Leave empty to disable. Can be overridden for class-specific thresholds.
The type of message to present to the Posit Package Manager Web UI. Must be one of 'raw' (the full message with details), 'safe' (a message without specific filesystem paths or threshold amounts), 'name' (the name of the filesystem storage class only) or 'none' (hidden from the UI). This setting cannot be overridden by class-specific configuration. Note, the server log will always contain the raw alert value.
The FileStorage section contains configuration properties which control where files are stored. You can configure a FileStorage section for each class of data:
binaries
bioconductor
cache
cran
metrics
packages
persistent
pypi
If you wish to change the base storage location for all Package Manager data, please use the Server.DataDir property instead. Use a FileStorage configuration section only when you wish to change the storage location for a particular class of data.
For example, to configure a custom storage location for the cache, you would create the following configuration section:
The S3Storage section contains configuration properties which control where files are stored on S3. You can configure an S3Storage section for each class of data:
binaries
bioconductor
cache
cran
metrics
packages
persistent
pypi
If you wish to use S3 for all variable data classes, please use a generic S3Storage configuration section. You can then override the generic settings for any storage class as necessary. For example:
/etc/rstudio-pm/rstudio-pm.gcfg
[Storage]Default=s3; Default S3 settings. This is the minimum-required setting for using S3.[S3Storage]Bucket=your-s3-bucket; Override default S3 settings for the "packages" class. This demonstrates; all the available S3 configuration settings.[S3Storage "packages"]Bucket=another-s3-bucketPrefix=rspm-packagesProfile=dev-rspmRegion=us-west-1EnableSharedConfig=true
Alternatively, you can specifiy each variable data class separately:
AWS Profile to use. This can also be defined through environment variables, the shared credentials file, or through the shared configuration file (if SharedConfig is enabled). Optional.
AWS Region to use. This can also be defined through environment variables, the shared credentials file, or through the shared configuration file (if SharedConfig is enabled).
Eviction policies can be used to keep server disk usage to a minimum. The Server.EvictedStorageClasses setting enables general eviction, however the EvictionPolicy section allows custom control of the objects in each class. You can configure a default EvictionPolicy section to control the lifetime of every cache object, or create custom EvictionPolicy sections for six classes of data if you need fine-grained control:
binaries
bioconductor
cache
cran
metrics
pypi
The following Server Configuration settings control when evictions occur. These settings correspond to the types of evictions enumerated below.
Server.EvictionInterval
Server.EvictionSweepSchedule
Server.PackagesEvictionSchedule
Normal Eviction
Runs at intervals defined by Server.EvictionInterval, and removes any assets in storage that have a last recorded access time that is older than the MaxAge setting for the storage class. The last recorded access times are stored in the Package Manager database and managed by the Package Manager service.
Sweep Eviction
Removes orphaned items by enumerating all assets in persistent storage and deleting any for which we have no corresponding database record. A "sweep" eviction is more time consuming, and it runs on the schedule defined by Server.EvictionSweepSchedule.
Packages Eviction
Removes orphaned packages for local, git, and Curated CRAN sources by enumerating all assets in persistent storage and deleting any for which we have no corresponding database record.
Example:
/etc/rstudio-pm/rstudio-pm.gcfg
[Server]EvictedStorageClasses="cache, metrics, cran, binaries"EvictionInterval=1hEvictionSweepSchedule="30 2 * * *"; Defaults[EvictionPolicy]MaxAge=720h; Override for a specific persistent storage class[EvictionPolicy "binaries"]MaxAge=300h
A regular expression whose matches will not be evicted from persistent storage unless orphaned. To ignore default exceptions and use no exceptions for a particular storage class, use the string none.