Solus eopkg¶
- ID
eopkg- Home page
- Upstream stars
⭐ 17
- Last commit
2026-09-05
- Version requirement
>= 3.2
- Platforms
🐧 Linux
- Operations
installed·outdated·search·install·upgrade·upgrade_all·remove·sync·cleanup- purl types
pkg:eopkg- CLI name
eopkg- Every call
eopkg --no-color <command>- Issues and PRs
- Source
Solus’ eopkg package manager, a PiSi fork.
installed and outdated parse eopkg’s fixed-width, |-delimited
status table; the column regex requires that pipe structure, so the header
and === separator rows fall through. --no-color is forced to keep
the output free of ANSI escapes.
Mutating operations pass --yes-all to auto-confirm eopkg’s prompts so
they run unattended.
Note
eopkg 4.x and 5.x ship as a Nuitka onefile bundle,
and the Python each carries reads its stdout encoding from the locale alone.
Under C or POSIX that encoding is ascii. The first summary holding a
character it cannot encode then aborts the command with
Error: System error. Program terminated. and exit 1, after a truncated
listing. list-upgrades and list-available write every summary raw, so
either Cap’n Proto or ImageMagick® stops them; search escapes ® but
not ’, so only the first stops it.
No extra_env pins the locale here, because mpm never reaches that state.
PEP 538 coercion exports
LC_CTYPE=C.UTF-8 from mpm’s own interpreter, and eopkg inherits it. A
shell exports nothing, which is why the same command fails by hand and
works through mpm. Measured on Solus 4.9, against eopkg 4.4.0 and
5.0.0 alike.
What mpm adds to eopkg¶
Through mpm, eopkg gains --exact search, to narrow results to exact names.
Bigger still, mpm reaches across every manager at once: mpm installed and mpm outdated cover eopkg 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 eopkg commands, in mpm¶
You already know eopkg: each operation maps one-to-one onto mpm, in an interface shared by every manager.
To… |
With |
With |
|---|---|---|
List what’s installed |
|
|
List outdated packages |
|
|
Search for a package |
|
|
Install a package |
|
|
Upgrade one package |
|
|
Upgrade everything |
|
|
Remove a package |
|
|
Clear caches |
|
|
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 search backfilled by |
|
✓ |
|
|
✓ |
|
|
✓ |
|
|
✓ |
|
|
✓ |
|
|
✓ |
|
|
Selecting and configuring eopkg¶
Deselect eopkg for a single run with --no-eopkg, or persist the choice in your configuration:
[mpm]
eopkg = false
The arguments and environment variables listed in the box atop this page are forced on every eopkg call, so runs stay quiet, non-interactive and reproducible: the defaults you would set in CI anyway.
Keep it enabled but tune how mpm drives it with a per-manager override:
[mpm.overrides.eopkg]
timeout = 900
mpm config-template eopkg prints every overridable attribute as a ready-to-paste block.
Recipes¶
A few jobs you would otherwise script around eopkg, one mpm command each:
Snapshot and clone a machine:
mpm --eopkg dump eopkg.toml, thenmpm restore eopkg.tomlon the next one.Export a compliance SBOM:
mpm --eopkg 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 Solus eopkg’s release-age gating, from the cooldown support table:
Status: ❌ None
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:
$ eopkg --version
eopkg.bin 5.0.0
and extracted with:
r"eopkg(?:\.bin)?\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 Solus eopkg well and a transcript below looks wrong, or a newer release changed its output format, report it.
$ eopkg --no-color list-installed --install-info
Package Name |St| Version| Rel.| Distro| Date
===========================================================================
aalib | i| 1.4.0_5| 9| Solus|07 Sep 2026 10:08
abseil-cpp | i| 20260107.1| 11| Solus|07 Sep 2026 10:08
accounts-qml-module | i| 0.7| 6| Solus|07 Sep 2026 10:08
accountsservice | i| 23.13.9| 38| Solus|07 Sep 2026 10:08
acl | i| 2.3.2| 22| Solus|07 Sep 2026 10:08
alsa-firmware | i| 1.2.4| 8| Solus|07 Sep 2026 10:08
alsa-lib | i| 1.2.14| 41| Solus|07 Sep 2026 10:08
alsa-plugins | i| 1.2.12| 26| Solus|07 Sep 2026 10:08
alsa-ucm-conf | i| 1.2.13| 1| Solus|07 Sep 2026 10:08
alsa-utils | i| 1.2.13| 29| Solus|07 Sep 2026 10:08
anthy | i| 9100h| 4| Solus|07 Sep 2026 10:08
aom | i| 3.12.1| 26| Solus|07 Sep 2026 10:08
appstream | i| 1.1.2| 17| Solus|07 Sep 2026 10:08
appstream-catalog | i| 20260417| 52| Solus|07 Sep 2026 10:08
appstream-qt6 | i| 1.1.2| 17| Solus|07 Sep 2026 10:08
argon2 | i| 20190702| 6| Solus|07 Sep 2026 10:08
$ eopkg --no-color list-upgrades --install-info
Package Name |St| Version| Rel.| Distro| Date
===========================================================================
acl | i| 2.3.2| 22| Solus|07 Sep 2026 10:08
alsa-lib | i| 1.2.14| 41| Solus|07 Sep 2026 10:08
alsa-ucm-conf | i| 1.2.13| 1| Solus|07 Sep 2026 10:08
alsa-utils | i| 1.2.13| 29| Solus|07 Sep 2026 10:08
anthy | i| 9100h| 4| Solus|07 Sep 2026 10:08
aom | i| 3.12.1| 26| Solus|07 Sep 2026 10:08
appstream | i| 1.1.2| 17| Solus|07 Sep 2026 10:08
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 --eopkg installed --output json, or csv, toml, yaml), each package carrying a purl and a version comparable across managers.
Upstream project¶
Metrics |
|
|---|---|
Activity |
|
Popularity |
|
Metadata |
|
Changelog¶
8.0.0.dev0(unreleased)Fix
search, which passed an empty argument toeopkgin extended mode.Fix version detection on eopkg
5.0.0, which calls itselfeopkg.binin its banner: the manager left the pool on every Solus host running it.Fix
installedandoutdated, which silently dropped the last two packages of every listing.Decode the character references
searchdescriptions carry, soImageMagick® suitereads asImageMagick® suite.Report the upgrade target in
outdated, which had none. Both sides now name the release, so a rebuild no longer reads as the same version.Correct the
searchcommands shown on each manager’s page, which named fewer options thanmpmactually runs.Detect Solus, where every run reported an unrecognized platform and selected no manager at all.
7.1.0(2026-07-07)upgrade --allnow passes--yes-all, matching the single-package upgrade, so it no longer hangs on an interactive confirmation prompt.
7.0.0(2026-06-26)Fix
installed,outdated, andsearchreturning no packages.
5.20.0(2024-11-25)Add support for new
eopkgmanager. Closes #1093.