Package management

Use peipkg to install, update, remove and inspect package files. Use feat when you need to set up or turn on a feature supplied by a package. Both run as you, and neither gives you additional authority.

Where to start #

What you needStart here
Find, install or remove softwareInstalling and removing packages
Apply updates or reverse a committed changeKeeping a system current
Add or repair a package sourceRepositories and trust
Understand an unexpected plan or a separate approvalDependency resolution
Check files or identify their ownerInspecting and verifying
Recover after a failed or interrupted operationTransactions and recovery
Choose which package supplies a shared nameClaims
Work on an offline installation or initramfsNamed roots
Turn a feature on or remove its setupUsing feat
Assemble a new image's package treeComposing a root

For desktop work, open Package Manager from the launcher by typing package, or Feature Manager by typing feature.

What a package is #

A .peipkg file carries a package's identity, version, architecture, dependencies and payload. peipkg records the installed package and the files it owns, so it can inspect, replace, remove and verify those files.

Installing a package makes its files available. A feature performs additional setup through scripts you explicitly run, such as registering or enabling a service. Package installation does not run those scripts. Remove a feature's setup before removing the package that supplies it.

A package can also provide a claim, a shared filesystem name with one holder. That chooses a provider; it is not the same operation as enabling a feature. Archive and manifest internals belong in the technical reference.

Where packages come from #

Repositories supply package files and signed metadata. peipkg refresh updates the cached metadata used to plan installs and updates. Before adding a repository, obtain its signing-key fingerprint through a trusted channel; configuration alone is not trust.

A local .peipkg file can also be installed. Its format and payload hashes are checked, but there is no repository trust chain authenticating it. You are vouching for that file.

peipkg has no authority of its own #

peipkg is an ordinary program running under your token. It has no privileged daemon, setuid identity, service account or broker. The system checks your rights against the security descriptors on the paths it changes and the state it reads or writes.

As shipped, package administration is for Administrators. Granting write access to package destinations is broader than permission to install one approved package: peipkg cannot provide that narrower permission for you. A package's requested security descriptor cannot give its installer authority the installer did not already have. See the privilege model for the boundary.

Every change is a transaction #

peipkg shows a plan before applying a change. Review every dependency, removal, source, version and target root, then read the final outcome and warnings. --yes skips only the routine approval; it does not approve the separate questions for elevated actions or modified configuration files.

Use undo or downgrade for a completed change you want to reverse, and recover for a pending interrupted transaction. They do not restore feature setup, registry state or user data. The technical reference documents rollback failures and recovery limits, so do not treat an error or a rolled-back history entry as proof that every file was restored. Verify after recovery.

Every operation is audited #

Package operations and deliberate authorisations produce semantic events in the audit stream. There are documented exceptions: automatic recovery emits no peipkg event, and event emission can fail without stopping a package change. The audit reference describes these limits. The kernel's audit of the actual file operations is the security record; peipkg's events are a useful summary.

The command surface #

Every command is invoked as peipkg <command> [arguments].

CommandDoes
installInstall packages, with dependencies, from a repository or a local .peipkg file.
remove (alias uninstall)Remove installed packages.
upgradeUpdate installed packages under the available sources and constraints.
downgradeMove one package to a specific older version.
undoReverse the most recent committed transaction as a new change.
claimShow or change which package holds a claim — a shared name that exactly one package may own.
refreshUpdate the cached metadata of the configured repositories.
repoConfigure repositories — add, list, remove.
rootManage named roots — add, list, remove, show.
listList the installed packages.
infoShow one installed package's details.
filesList the files a package owns.
ownsReport which package owns a given path.
searchSearch the configured repositories for a package.
verifyCheck installed files against what was recorded at install.
historyShow the transaction log.
recoverRecover pending work; cross-root recovery may roll forward.
cleanDelete unused metadata-cache data; see the documented cache-scope limits.

One global option sits before the command: --root TARGET makes peipkg operate on a Peios installation other than the running system at /. TARGET can be a literal path — a Peios installation mounted at DIR, the form used by image builders and offline maintenance — or the name of a named root. Named roots are more than a convenience: they are how peipkg keeps components such as the initramfs current. See Named roots for the detail.

The producer side #

Building and signing packages is pekit's job; publishing repositories is peipkg-repo's. See the Producing packages reference for that work. peipkg-compose is a separate consumer-side binary for assembling a fresh root, not a peipkg subcommand or a live-system updater.

Edit this page