snapcraft Intro

Installation der snap Infrastruktur (s.a install snapd):

sudo -H apt install snapd snapcraft build-essential

Für den Build Prozess der Pakete wird snapcraft benötigt, die Tools aus dem apt-Paket build-essential werden i.d.R. auch gebraucht, wenn man snap-Pakete bauen will.

Snap erstellen:

$ mkdir hello
$ cd hello
~/hello$ snapcraft init
Created snap/snapcraft.yaml.
Edit the file to your liking or run `snapcraft` to get started

Laut Doku muss der Snap-Ordner (hier im Beispiel hello) im HOME-Ordner liegen (warum?).

Beispiel für eine snapcraft.yaml:

name: hello
version: '2.10'
summary: GNU Hello, the "hello world" snap
description: |
  GNU hello prints a friendly greeting.
grade: devel
confinement: devmode

Snap Buid:

$ cd hello
~/hello$ snapcraft
[...]
Staging gnu-hello
Priming gnu-hello
Snapping 'hello' |
Snapped hello_2.10_amd64.snap

~/hello$ ls -la
insgesamt 88
drwxrwxr-x  6 user user  4096 Sep  6 11:48 .
drwxr-xr-x 39 user user  4096 Sep  6 11:18 ..
-rw-r--r--  1 user user 65536 Sep  6 11:48 hello_2.10_amd64.snap
drwxrwxr-x  3 user user  4096 Sep  6 11:48 parts
drwxrwxr-x  6 user user  4096 Sep  6 11:48 prime
drwxrwxr-x  3 user user  4096 Sep  6 11:48 snap
drwxrwxr-x  4 user user  4096 Sep  6 11:48 stage

Snap Installieren:

~/hello$ sudo -H snap install --devmode hello_2.10_amd64.snap

hello 2.10 installed

Snaps auflisten:

$ snap list
Name   Version    Rev   Developer  Notes
core   16-2.27.5  2774  canonical  core
hello  2.10       x1               devmode

Das snap hello (Programm) ist installiert, kann aber ‚so‘ noch nicht vom Benutzer aufgerufen werden. Die Anwendungen aus den Snaps sind über /snap/bin zu erreichen, sofern sie freigeschaltet wurden.

Hier ein Beispiel für eine apps Sektion (snap/snapcraft.yaml):

name: hello
version: '2.10'
summary: GNU Hello, the "hello world" snap
description: |
  GNU hello prints a friendly greeting.
grade: devel
confinement: devmode

apps:
  hello:
    command: bin/hello

parts:
  gnu-hello:
    source: http://ftp.gnu.org/gnu/hello/hello-2.10.tar.gz
    plugin: autotools

Es soll die App hello mit dem Kommando bin/hello installiert werden.