Snap revision overrides

You can override the revisions for specific snaps, on a specific channel. This means you can control the specific revision of a snap in a channel, rather than what the upstream publisher has released. You can use this to effectively pin revisions, and control when you are ready to upgrade to newer revisions.

There are a few different ways to configure overrides.

Proxy server

To configure overrides from the proxy server, use the snap-proxy command.

To add an override:

sudo snap-proxy override <snap> <channel>=<revision>

To list overrides currently in place:

sudo snap-proxy list-overrides <snap>

To remove all current overrides on a channel:

sudo snap-proxy delete-override <snap> <channel>

Revisions and Architectures

A Snap Store channel can publish only one revision of a specific snap at any time.

A snap revision can support one or multiple architectures. Specifying a revision for an override therefore also determines which architectures the override is set for.

Revisions for specific snaps can be looked up using the snap info command, which lists currently available revisions for the architecture of the device running this command. Snap Stores Devices API snaps_info endpoint can also be used to obtain available revisions for selected architectures.

In the example below, we have the core18 snap and two revisions, each supporting one architecture.

# 1722 is one of the amd64 revisions of the core18 snap.
$ sudo snap-proxy override core18 stable=1722
core18 stable amd64 1722

# 1725 is one of the armhf revisions of the core18 snap.
$ sudo snap-proxy override core18 stable=1725
core18 stable armhf 1725

# We can see that we've overriden the stable channel revisions for both
# amd64 and armhf and that both upstream counterparts ar at lower revisions.
$ sudo snap-store-proxy list-overrides core18
core18 stable amd64 1722 (upstream 1705)
core18 stable armhf 1725 (upstream 1706)

# Deleting a channel-specific override deletes overrides for all revisions
# and architectures.
$ sudo snap-store-proxy delete-override core18 stable
core18 stable amd64 is tracking upstream (revision 1705)
core18 stable armhf is tracking upstream (revision 1706)

Overrides API

Alternatively, you can also manage overrides via a REST API

Command line tool

There is a CLI tool to help manage overrides, which uses the API and can be used remotely to administer overrides:

sudo snap install snapstore-client

Authentication is performed using Ubuntu SSO, and users need to be authorised from the CLI on the server using:

sudo snap-proxy add-admin [email protected]

On the client side, you authenticate by:

snapstore-client login

Overrides are managed in the same way as with the snap-proxy command above, e.g.:

snapstore-client list-overrides
snapstore-client override foo stable=10
snapstore-client delete-override foo