Image Packaging System¶
- ID
ips- Home page
- Platforms
⨂ Unix (illumos, Solaris only)
- Operations
installed·search·install·upgrade·upgrade_all·remove·sync- purl types
pkg:ips- CLI name
pkg- Issues and PRs
- Source
The Image Packaging System, the native pkg of Solaris and illumos.
Documentation: pkg(1) man page.
The CLI is named pkg, which the FreeBSD PKG manager also claims.
The two never coexist, their platforms being disjoint, but the manager ID
here is ips so the two stay addressable apart.
Note
Only root may modify the image, so mutating operations escalate through
sudo. sync escalates too: refreshing the catalog writes into the
image’s own metadata rather than a user cache.
Caution
installed passes --no-refresh to keep the inventory a local read. Left
off, pkg list contacts every configured publisher first, which turns a
listing into a network round-trip and fails outright when the host is
offline.
Todo
outdated is not implemented. The operation needs a sample naming both the
installed and the available version, and the only illumos host available
reported no packages have newer versions available.
That state cannot be manufactured on a consistent image, so do not spend
time trying: installing a superseded build to force one is refused with
did not match any allowable packages, the release incorporations
constraining an image to one allowable version per package. Inventing a
fixture is not an option either, a sample having to parse through this
manager’s own parser and having to be real.
Capture it on a host whose image has fallen behind its publisher, which is the only state that emits the output.
What mpm adds to ips¶
Through mpm, ips gains --exact and --extended search, to narrow to exact names or match descriptions.
Bigger still, mpm reaches across every manager at once: mpm installed and mpm outdated cover ips alongside every other manager you run in one table, mpm upgrade --all updates them together, and mpm sbom exports the whole machine as one bill of materials.
Every mpm command also gains --dry-run and --plan previews, cross-scheme version comparison and purl identifiers. See manager augmentations for how each one is built.
Your ips commands, in mpm¶
You already know ips: each operation maps one-to-one onto mpm, in an interface shared by every manager.
To… |
With |
With |
|---|---|---|
List what’s installed |
|
|
Search for a package |
|
|
Install a package |
|
|
Upgrade one package |
|
|
Upgrade everything |
|
|
Remove a package |
|
|
Prefix any command above with --dry-run to simulate the underlying manager calls without touching the system: the safe way to watch what mpm would do before trusting it.
Operations¶
Operation |
Supported |
Notes |
|---|---|---|
|
✓ |
|
|
||
|
||
|
✓ |
exact and extended search backfilled by |
|
✓ |
|
|
✓ |
|
|
✓ |
|
|
✓ |
|
|
✓ |
|
|
||
|
Selecting and configuring ips¶
Deselect ips for a single run with --no-ips, or persist the choice in your configuration:
[mpm]
ips = false
Keep it enabled but tune how mpm drives it with a per-manager override:
[mpm.managers.ips]
timeout = 900
mpm config-template ips prints every overridable attribute as a ready-to-paste block.
Recipes¶
A few jobs you would otherwise script around ips, one mpm command each:
Snapshot and clone a machine:
mpm --ips dump ips.toml, thenmpm restore ips.tomlon the next one.Export a compliance SBOM:
mpm --ips sbom(CycloneDX by default,--spdxfor SPDX).
Privilege escalation¶
System-wide manager: mpm wraps its privileged operations in sudo out of the box. Instead of letting the tool prompt mid-run, mpm primes the credential cache up-front, with a single branded password prompt at most. Turn escalation off for rootless setups with --no-sudo or the per-manager sudo override.
See privilege escalation for the full policy.
Cooldown¶
State of Image Packaging System’s release-age gating, from the cooldown support table:
Status: ❌ None (packaging dates are publisher-set manifest metadata)
A cooldown only pays off where a compromised release can be withdrawn while the clock runs, and can only be emulated where the registry dates its releases. From the retraction table:
Registry: Distro binary archives (
pkg:deb,pkg:rpm,pkg:alpm,pkg:apk)Retraction: Index revert: removal is an archive operation and the mirror is rebuilt without the package. Debian, for one, requires filing an
RM:bug againstftp.debian.org(developers-reference)Publish date: ❌ the version string is the distro maintainer’s build, carrying no upstream publication date
With --cooldown set, mpm skips this manager’s install and upgrade operations rather than run them unguarded (fail-closed); --cooldown best-effort opts back in.
Version probe¶
The version is probed by running:
$ pkg list -H --no-refresh package/pkg
package/pkg 0.5.11-2025.0.0.5626 i--
and extracted with:
r"package/pkg\s+(?P<version>\S+)"
Reference traces¶
Raw native outputs captured in the manager source: the reference mpm’s parsers were written against. If you know Image Packaging System well and a transcript below looks wrong, or a newer release changed its output format, report it.
$ pkg list -H --no-refresh
SUNWcs 0.5.11-2026.0.0.23029 i--
SUNWcsd 0.5.11-2026.0.0.23029 i--
archiver/gnu-tar 1.35-2023.0.0.0 i--
audio/audio-utilities 0.5.11-2026.0.0.23029 i--
audio/lame 3.100-2025.0.0.3 i--
Feed any of these through mpm and the raw output becomes one uniform table, the same shape for every manager: filter it, project columns, or export it (mpm --ips installed --output json, or csv, toml, yaml), each package carrying a purl and a version comparable across managers.
Changelog¶
8.0.0.dev0(unreleased)Add the Image Packaging System of Solaris and illumos, with inventory, search, install, remove, upgrade, catalog sync and history purge.