Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Upgrade

An upgrade is a new binary and sandcastle install again.

  1. Read the changelog. A new major version means you edit the configuration, or a promise changed.

  2. In the folder where you built sandcastle, take the most recent version and build it:

    git fetch --tags
    git checkout "$(git tag --list 'v*' --sort=-v:refname | head -n 1)"
    CGO_ENABLED=0 go build -trimpath -o dist/sandcastle .
    
  3. Install it:

    ./dist/sandcastle install
    

    It checks the configuration first. If it is not valid for the new version, install says what is wrong and changes nothing.

    While the four images are built, the running pieces keep working. Then install puts the new binary in ~/.local/bin/sandcastle by a rename, so a core still running keeps its old file. It writes the units again, restarts sandcastle.target and removes the images of older builds. It remembers the ranges you gave with --link and --egress; you do not repeat them.

  4. Confirm:

    sandcastle version
    sandcastle check
    

Keep your changes to the units

Change a unit with a drop-in, such as ~/.config/containers/systemd/sandcastle-keep.container.d/10-mine.conf. install never touches a drop-in, so it survives every upgrade. A change made in a unit itself is lost at the next install.

A drop-in that removes a lock of the keep or the gate, or adds a port or a capability, makes check warn; see Check messages.