AppImage Manager¶

ID

am

Home page

https://github.com/ivan-hc/AM

Version requirement

>= 10.4

Platforms

🐧 Linux (except Windows Subsystem for Linux v1, Windows Subsystem for Linux v2)

Operations

installedĀ Ā· upgradeĀ Ā· upgrade_allĀ Ā· removeĀ Ā· cleanup

purl types

pkg:am

CLI name

am

Forced environment
  • NO_COLOR=1

Issues and PRs

šŸ“¦ manager: am

Source

meta_package_manager/managers/am.py

AppImage manager, covering the applications of its own catalog.

Note

am and appman are the same script under two names, and only this one is wrapped. AppMan’s repository holds no implementation at all, just a stub that replaces itself with this script, which then reads its own path to decide whether to run system-wide or under the user’s home. Wrapping both would double-count: am -fi renders AppMan’s applications in a second table of its own whenever AppMan is configured, so they are already reported here. See Unsupported managers for the recorded decision.

Caution

The listing’s column count depends on its contents: a fifth column appears between the name and the version whenever an application resolves to a third-party catalog. The version is therefore located by reading the header rather than by counting from the left, which is also what lets a listing carrying two tables be parsed in one pass.

Note

No install. am refuses to be run under sudo and escalates on its own instead, priming the credential cache before it installs anything, so an install blocks on a password prompt that no flag of its own can answer. Removal is unaffected, -R needing no confirmation and no escalation mpm has to arrange.

No outdated either: nothing reports a remote version without installing it, and the catalog carries no versions at all. Its maintainer declined to publish a machine-readable feed, so this is settled rather than pending, and upgrade --all is unaffected.

No search: results are folded to the terminal width before they are printed, so a record wraps across lines with no marker to rejoin it, and its description is unrecoverable once wrapped.

Documentation: AM.

What mpm adds to am¶

mpm reaches across every manager at once, not am alone: mpm installed and mpm outdated cover am 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 am commands, in mpm¶

You already know am: each operation maps one-to-one onto mpm, in an interface shared by every manager.

To…

With am

With mpm

List what’s installed

am --version

mpm --am installed

Upgrade one package

am -y -u firefox

mpm --am upgrade firefox

Upgrade everything

am -y -u --apps

mpm --am upgrade --all

Remove a package

am -R firefox

mpm remove pkg:am/firefox

Clear caches

am -c

mpm --am cleanup --cache

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

installed

āœ“

outdated

orphans

search

install

upgrade

āœ“

upgrade_all

āœ“

remove

āœ“

sync

cleanup

āœ“

doctor

Selecting and configuring am¶

Deselect am for a single run with --no-am, or persist the choice in your configuration:

[mpm]
am = false

The arguments and environment variables listed in the box atop this page are forced on every am 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.managers.am]
timeout = 900

mpm config-template am prints every overridable attribute as a ready-to-paste block.

Recipes¶

A few jobs you would otherwise script around am, one mpm command each:

  • Snapshot and clone a machine: mpm --am dump am.toml, then mpm restore am.toml on the next one.

  • Export a compliance SBOM: mpm --am sbom (CycloneDX by default, --spdx for SPDX).

Privilege escalation¶

AppImage Manager runs sudo from inside its own commands: mpm never wraps it, keeps an already-warm credential cache alive for those internal escalations, and warns when a mutating call goes silent on a terminal with a cold cache, since a password prompt may be hiding in the stream.

See privilege escalation for the full policy.

Cooldown¶

State of AppImage Manager’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: Git-manifest indexes

  • Retraction: Index revert: reverting the manifest, Portfile or derivation commit withdraws the version

  • Publish date: āŒ only the commit date, which is client-set and trivially backdated

With --cooldown set, mpm skips this manager’s install and upgrade operations rather than run them unguarded (fail-closed); --allow-unsupported-managers opts back in.

Version probe¶

The version is probed by running:

$ am --version
10.4

and extracted with:

r"(?m)^(?P<version>\d+(?:\.\d+)+)$"

Reference traces¶

Raw native outputs captured in the manager source: the reference mpm’s parsers were written against. If you know AppImage Manager well and a transcript below looks wrong, or a newer release changed its output format, report it.

$ am --version
10.4

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 --am installed --output json, or csv, toml, yaml), each package carrying a purl and a version comparable across managers.

Changelog¶

  • 7.7.0.dev0 (unreleased)

    • Add the AM AppImage manager with installed, upgrade, remove and cleanup support. Its listing locates the version by reading the table header, the column count depending on the applications installed. It declares no install, which blocks on an escalation prompt, no outdated, which the catalog cannot answer, and no search, whose records are folded to the terminal width.