Skip to main content

Package

The Package service provides methods for managing system packages on target hosts. Access via client.Package.List(), client.Package.Install(), etc.

Methods​

MethodDescription
List(ctx, hostname)List all installed packages
Get(ctx, hostname, name)Get a package by name
Install(ctx, hostname, name)Install a package
Remove(ctx, hostname, name)Remove a package
Update(ctx, hostname)Refresh package sources
ListUpdates(ctx, hostname)List available package updates

Usage​

import "github.com/osapi-io/osapi/pkg/sdk/client"

c := client.New("http://localhost:8080", token)

// List all installed packages
resp, err := c.Package.List(ctx, "web-01")
for _, r := range resp.Data.Results {
for _, p := range r.Packages {
fmt.Printf("%s %s (%s)\n", p.Name, p.Version, p.Status)
}
}

// Get a specific package
resp, err := c.Package.Get(ctx, "web-01", "nginx")

// Install a package
resp, err := c.Package.Install(ctx, "web-01", "nginx")
for _, r := range resp.Data.Results {
fmt.Printf("changed=%v\n", r.Changed)
}

// Remove a package
resp, err := c.Package.Remove(ctx, "web-01", "nginx")

// Refresh package sources (apt-get update)
resp, err := c.Package.Update(ctx, "web-01")

// List available updates
resp, err := c.Package.ListUpdates(ctx, "web-01")
for _, r := range resp.Data.Results {
for _, u := range r.Updates {
fmt.Printf("%s: %s -> %s\n", u.Name, u.CurrentVersion, u.NewVersion)
}
}

Example​

Permissions​

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

Package management is supported on the Debian OS family (Ubuntu, Debian, Raspbian). On unsupported platforms (Darwin, generic Linux), operations return status: skipped.