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.