AppManager¶
- ID
app-manager- Link
- Version requirement
>= 3.6
- Platforms
🐧 Linux
- Operations
outdated·install·upgrade_all·remove- purl types
pkg:app-manager/- CLI name
app-manager- Issues and PRs
- Source
AppManager is a GTK application installing the AppImage files dropped on it and keeping them updated, with a command line for the same jobs.
Parsing notes, verified against AppManager 3.8.0 on Ubuntu 26.04 aarch64:
Every declared verb completes headless.
--version,--update-checkand--update-allare answered before the application starts, andinstall,updateanduninstallcompleted with no display attached.updateanduninstallfind an app by its installed path, by the path it was installed from, or by the checksum of a file at that path, and never by name (locate_record()in src/application.vala):uninstall AppManageranswers “No installation matches AppManager” with exit code 3. The per-app operations are therefore keyed on the path the app was installed from, which the registry keeps afterinstallmoved the file away, so one id round-trips from install to remove.--update-checknames each app instead, and nothing lists the installed apps: the registry at ~/.local/share/app-manager/installations.json is read by the application alone. That leavesoutdatedkeyed on names the other operations do not accept, which the operation notes below tell the user. It also leavesupdateunmapped: mpm routes a single-package upgrade through the manager’s inventory.installanduninstallprint “gtk4-update-icon-cache: Cache file created successfully.” on stderr while exiting 0.--is-installedis not used: pointed at an installed file, it opened the window and never answered.
What mpm adds to app-manager¶
mpm reaches across every manager at once, not app-manager alone: mpm installed and mpm outdated cover app-manager 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 app-manager commands, in mpm¶
You already know app-manager: each operation maps one-to-one onto mpm, in an interface shared by every manager.
To… |
With |
With |
|---|---|---|
List outdated packages |
|
|
Install a 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 |
|---|---|---|
|
❌ |
No command lists the installed apps: only the application reads its registry. |
|
✅ |
Reports each app by name, a key the other per-app operations do not accept. |
|
||
|
❌ |
No catalog: AppManager installs AppImage files the user downloaded. |
|
✅ |
Takes the path of a downloaded AppImage file, and moves that file into |
|
❌ |
No single-app upgrade: routing one needs an inventory, which nothing lists. |
|
✅ |
|
|
✅ |
Takes the path the app was installed from, or its installed path, never its name. |
|
||
|
||
|
Configuration¶
Ignore
app-manageron thempmCLI by passing the--no-app-manageroption.Ignore it for every run in your configuration:
[mpm] app-manager = false
Raise the timeout of all
app-managercalls:[mpm.overrides.app-manager] timeout = 900
Run
mpm config-template app-managerto print all overridable settings for your configuration file:[mpm.overrides.app-manager] cli_names = [ "app-manager", ] cli_search_path = [] dry_run = false ignore_auto_updates = true plan = false post_args = [] pre_args = [] pre_cmds = [] requirement = ">=3.6.0" stop_on_error = false unmaintained = false version_cli_options = [ "--version", ] version_regexes = [ "^AppManager (?P<version>\\S+)", ]
Recipes¶
A few jobs you would otherwise script around app-manager, one mpm command each:
Snapshot and clone a machine:
mpm --app-manager dump app-manager.toml, thenmpm restore app-manager.tomlon the next one.Export a compliance SBOM:
mpm --app-manager sbom(CycloneDX by default,--spdxfor SPDX).
Privilege escalation¶
mpm runs this manager as the current user and never prepends sudo by default. Flip the policy for its privileged operations with --sudo or the per-manager sudo override.
None of its operations is privileged.
See privilege escalation for the full policy.
Cooldown¶
State of AppManager’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: GitHub release assets
Retraction: None: withdrawing a build is the upstream author deleting their own release or tag. Nothing sits between them and the user
Publish date: ✅ server-set
published_aton each release (REST API)
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.
Reference traces¶
A collection of raw native outputs captured from the manager’s own CLI and recorded in the bundled definition. If you know AppManager well and a transcript below looks wrong, or a newer release changed its output format, report it.
$ app-manager --update-check
AppManager: 3.7.3 -> v3.8.0
Version check¶
The version is probed by running:
$ app-manager --version
AppManager 3.8.0
and extracted with:
r"^AppManager (?P<version>\S+)"
Changelog¶
8.1.0.dev0(unreleased)Add the AppManager AppImage manager with
outdated,install,removeand fullupgradesupport.installandremovetake the AppImage’s file path, and nothing lists the installed apps.