How to Freeze a Checkbox Version

How to freeze Checkbox Snaps

Snaps update automatically, and by default, the Snapd daemon checks for updates 4 times a day. The snap refresh --hold command holds snap updates for individual snaps, or for all snaps on the system, either indefinitely or for a specified period of time.

$ snap refresh --hold=<duration> <snap1> <snap2>...

This option has been available since snapd 2.58, and it is available for all the Ubuntu versions in which Checkbox is supported.

To postpone the Checkbox snaps updates indefinitely, we can use --hold=forever. Here is how you can stop the Checkbox snap automatic updates and freeze it in the current version:

$ snap refresh --hold=forever checkbox checkbox22

To check which snaps are being held, you can look for held in the notes column when running snap list:

$ snap list
Name        Version        Rev    Tracking       Publisher            Notes
checkbox    3.3.0-dev19    5224   22.04/stable   ce-certification-qa  classic,held
checkbox22  3.3.0-dev19    726    latest/stable  ce-certification-qa  held

To remove the hold, just run the snap refresh --unhold command for each snap.

$ snap refresh --hold=forever checkbox checkbox22
$ snap list
Name        Version        Rev    Tracking       Publisher            Notes
checkbox    3.3.0-dev19    5224   22.04/stable   ce-certification-qa  classic
checkbox22  3.3.0-dev19    726    latest/stable  ce-certification-qa  -

How to freeze Checkbox Debs

Using Ubuntu Snapshot Service (20.04 or later)

To freeze the Checkbox version of a deb package we will make use of the Ubuntu Snapshot Service. This service allows you to see and use the Ubuntu archive, as well as all PPAs (both private and public), as it was at any specified date and time, for any time and date after 1 March 2023.

Snapshots are supported in Ubuntu 23.10 or later, and also on updated installations of Ubuntu 20.04 LTS (with apt 2.0.10) and Ubuntu 22.04 LTS(with apt 2.4.11).

Enable the snapshot service

For Ubuntu 24.04

The apt included in Ubuntu 24.04 and later automatically detects when snapshots are supported for a repository and are enabled by default.

Nevertheless, for PPAs in Launchpad it is sometimes necessary to modify the URI field to match the URL of the snapshot. In the case of Checkbox, you have to edit /etc/apt/sources.list.d/checkbox-dev-ubuntu-{ppa-name}-{ubuntu-version}.list and add a tilde before checkbox-dev.

For example:

# In “/etc/apt/sources.list.d/checkbox-dev-ubuntu-beta-noble.list”
Types: deb
URIs: https://ppa.launchpadcontent.net/~checkbox-dev/beta/ubuntu/
Suites: noble
Components: main
Signed-By: {KEY}
For Ubuntu 23.10 and earlier

On Ubuntu 23.10 and earlier, edit /etc/apt/sources.list.d/checkbox-dev-ubuntu-{ppa-name}-{ubuntu-version}.list and add [snapshot=yes] into the standard prefix. You also need to modify the PPA URL to include the tilde before checkbox-dev so it points to the correct snapshot URL. For example:

# In “/etc/apt/sources.list.d/checkbox-dev-ubuntu-beta-jammy.list”
deb [snapshot=yes] https://ppa.launchpadcontent.net/~checkbox-dev/beta/ubuntu jammy main

Use a Snapshot ID with apt commands

The Ubuntu snapshot service uses a Snapshot ID to indicate the desired date and the UTC time of the snapshot in the format YYYYMMDDTHHMMSSZ. For example, 20230302T030400Z would be 03:04 UTC on 2 March 2023.

Once snapshots are enabled for a repository, it is possible to pass a specific Snapshot ID to most apt or apt-get commands with --snapshot [Snapshot ID] or -S [Snapshot ID], for example:

$ apt update --snapshot 20240416T000000Z
$ apt policy checkbox-ng -S 20240416T000000Z
$ apt install checkbox-ng --snapshot 20240416T000000Z

Using a specific Snapshot ID for all apt commands

It is possible to set apt to use a particular snapshot for all apt commands of a PPA repository. To do this, the specific Snapshot ID (e.g. 20240416T000000Z) can be used in place of “yes” in the relevant source.

For Ubuntu 24.04
# In “/etc/apt/sources.list.d/checkbox-dev-ubuntu-beta-noble.list”
Types: deb
URIs: https://ppa.launchpadcontent.net/~checkbox-dev/beta/ubuntu/
Suites: noble
Components: main
Signed-By: {KEY}
Snapshot: 20240416T000000Z
For Ubuntu 23.10 and earlier
# In “/etc/apt/sources.list.d/checkbox-dev-ubuntu-beta-jammy.list”
deb [snapshot=20240416T000000Z] https://ppa.launchpadcontent.net/~checkbox-dev/beta/ubuntu jammy main

Disable Snapshot Service for a repository

For Ubuntu 24.04

For Ubuntu 24.04 and later, snapshots are enabled automatically for supported repositories. If you want to disable them for the Checkbox repository, edit the sources file To include Snapshot: no.

# In “/etc/apt/sources.list.d/checkbox-dev-ubuntu-beta-noble.list”
Types: deb
URIs: https://ppa.launchpadcontent.net/~checkbox-dev/beta/ubuntu/
Suites: noble
Components: main
Signed-By: {KEY}
Snapshot: no
For Ubuntu 23.10 and earlier

On Ubuntu 23.10 and earlier the included version of apt did not automatically detect snapshot support, so snapshots should not be enabled unless you have added [snapshot=yes] to the relevant source.

Using snapshots for 18.04 or earlier

The Ubuntu Snapshot Service is available for 18.04 (Bionic) and 16.04 (Xenial) but the apt version included does not support the --snapshot option. In this case, it is required to set up manually the URL in your sources to point to a specific snapshot. This option is also possible for later versions of Ubuntu.

Manually set the URL to the snapshot

To set the URL to point to a specific snapshot, you have to edit: /etc/apt/sources.list.d/checkbox-dev-ubuntu-{ppa-name}-{ubuntu-version}.list and change the URL:

  • ppa.launchpadcontent.net -> snapshot.ppa.launchpadcontent.net

  • Append the timestamp to the end of the URL

For example:

# In “/etc/apt/sources.list.d/checkbox-dev-ubuntu-beta-bionic.list”
deb https://ppa.launchpadcontent.net/checkbox-dev/beta/ubuntu bionic main

Should be changed to:

# In “/etc/apt/sources.list.d/checkbox-dev-ubuntu-beta-bionic.list”
deb https://snapshot.ppa.launchpadcontent.net/checkbox-dev/beta/ubuntu/20240416T000000Z bionic main

To revert to the latest version, you can remove snapshot part and the timestamp from the URL.

See also