Skip to main content

Package Management

OSAPI manages system packages on target hosts. It wraps the native package manager (apt on Debian-family systems) behind a consistent API that supports listing installed packages, installing, removing, refreshing sources, and checking for available updates.

How It Works​

The package provider delegates to the host's native package manager. On Debian-family systems this means dpkg-query for reads and apt-get for mutations. All operations run on the agent -- the controller never executes package commands directly.

List and Get​

The list operation queries the local package database for all installed packages. Each entry includes the package name, version, status, and installed size. The get operation fetches a single package by name.

Install​

Installs a package by name using apt-get install. If the package is already installed, the operation returns changed: false. The agent runs apt-get update automatically before installing to ensure the latest version is available.

Remove​

Removes a package by name using apt-get remove. If the package is not installed, the operation returns changed: false.

Update (Refresh Sources)​

Refreshes the package source lists using apt-get update. This does not upgrade any packages -- it only updates the local cache of available packages from configured repositories. Returns changed: true when sources are refreshed successfully.

List Available Updates​

Queries for packages that have newer versions available in the configured repositories. Returns each package name along with the current installed version and the new available version.

Operations​

OperationDescription
ListList all installed packages
GetGet a specific package by name
InstallInstall a package
RemoveRemove a package
UpdateRefresh package sources
UpdatesList packages with available updates

CLI Usage​

# List all installed packages on a host
osapi client node package list --target web-01

# Get details for a specific package
osapi client node package get --target web-01 --name nginx

# Install a package
osapi client node package install --target web-01 --name nginx

# Remove a package
osapi client node package remove --target web-01 --name nginx

# Refresh package sources (apt-get update)
osapi client node package update --target web-01

# List available updates
osapi client node package updates --target web-01

# Broadcast install to all hosts
osapi client node package install --target _all --name htop

All commands support --json for raw JSON output.

Broadcast Support​

All package operations support broadcast targeting. Use --target _all to run on every registered agent, or use a label selector like --target group:web to target a subset.

Responses always include per-host results:

Job ID: 550e8400-e29b-41d4-a716-446655440000

HOSTNAME NAME VERSION STATUS SIZE
web-01 nginx 1.24.0-2 installed 1.2 MB
web-02 nginx 1.24.0-2 installed 1.2 MB

Skipped and failed hosts appear with their error in the output.

Supported Platforms​

OS FamilySupport
DebianFull
DarwinSkipped
LinuxSkipped

On unsupported platforms, package operations return status: skipped instead of failing. See Platform Detection for details on OS family detection.

Permissions​

OperationPermission
List, Get, Updatespackage:read
Install, Remove, Update Sourcespackage:write

All built-in roles (admin, write, read) include package:read. The admin and write roles also include package:write.