# `CONSFIGURATOR.PROPERTY.PACKAGE`

## API reference

### General

#### Constant: `PACKAGE:+CONSFIGURATOR-SYSTEM-DEPENDENCIES+`

#### Simple error: `PACKAGE:PACKAGE-MANAGER-NOT-FOUND`

`(package:package-manager-not-found)`

#### Property: `PACKAGE:INSTALLED`

`(package:installed package-manager &rest package-lists)`

Attempt to use a system package manager to install system packages as specified by PACKAGE-LISTS. If PACKAGE-MANAGER, a keyword, use that particular package manager; otherwise, see what we can find on PATH.

Each of PACKAGE-LISTS is a plist where the keys identify package managers, and where the values are lists of package names to install using that package manager. See PACKAGE:+CONSFIGURATOR-SYSTEM-DEPENDENCIES+ for an example.

This property should not typically be applied to hosts. It is preferable to use an operating system-specific property, such as APT:INSTALLED. This property exists because in a few cases it is necessary to install packages where there is no known-valid HOST value for the machine upon which we need to install packages, and thus we cannot infer what package manager to use from the host’s OS, and must fall back to seeing what’s on PATH.

In particular, when starting up a remote Lisp image when the REMAINING argument to ESTABLISH-CONNECTION is non-nil, we might be starting up Lisp on a machine other than the one to be deployed and we do not have HOST values for intermediate hops. Another case is INSTALLED:CLEANLY-INSTALLED-ONCE; regardless of REMAINING, the initial OS might be the one we will replace, not the declared OS for the host.