Das zentrale Bereitstellen von Software und das Aktualisieren dieser gehören zum Standardrepertoire von Administratoren. Im Januar-Schwerpunkt ... (mehr)

Einfache Bedienung

Äußerlich unterscheidet sich Snap kaum von der etablierten Konkurrenz. Ähnlich wie "apt", "zypper" und Co verwaltet das Kommandozeilenprogramm "snap" die Pakete. Der folgende Befehl installiert etwa die Datenbank CouchDB:

sudo snap install couchdb

Standardmäßig zapft "snap" den von Canonical betriebenen Ubuntu Store an. Dort kann jeder Entwickler seine Snaps nach einer Registrierung hochladen. Ähnlich wie im Apple Store oder bei Google Play durchläuft das Snap vor der Veröffentlichung einen automatisierten Review-Prozess. Den kompletten Ubuntu Store durchsuchen Sie mit "snap find" (Bild 1). Während einige Snap-Unterkommandos wie "find" auch Benutzer aufrufen können, gelingt die Installation oder die Deinstallation nur mit Root- beziehungsweise Systemverwalterrechten.

Bild 1: Hier hat Snap alle Pakete herausgesucht, die zum Begriff "database" passen.

Ein aus dem Internet heruntergeladenes Snap spielen Sie analog ein, das Snap "foo.snap" etwa mit »sudo snap install foo.snap« . Sollte "snap" dabei eine fehlende Signatur bemängeln, müssen Sie diese separat herunterladen. Die entsprechende Datei trägt in der Regel die Endung ".assert", die Sie Snap mit »sudo snap ack foo.assert« zuführen. Anschließend sollte "snap" das Snap-Paket klaglos installieren. Alternativ können Sie das Paket via »sudo snap install --force-dangerous foo.snap« einspielen. Der Parameter hebelt dabei die Verifikation aus, weshalb die Snap-Entwickler davon abraten.

In jedem Fall verrät »snap list« alle derzeit installierten Snaps, die wiederum der Befehl »sudo snap refresh« aktualisiert. Zumindest unter Ubuntu stößt ein entsprechender Systemd-Timer diesen Befehl einmal in der Woche automatisch an. Sollte beim Update eines Snaps ein Fehler auftreten, kehrt »sudo snap revert couchdb« zur letzten Version vor dem Update zurück – im Beispiel zur letzten CouchDB-Version.

Für Administratoren interessant sind die Kommandos »snap disable« und »snap enable« , über die sich ein Snap schnell deaktivieren und später wieder aktivieren lässt. Via »sudo snap disable couchdb« können Sie so vorübergehend die Datenbank lahmlegen. Der Befehl »sudo remove couchdb« löscht schließlich das CouchDB-Snap komplett von der Festplatte. Bietet ein Snap einen Dienst an, lässt er sich manuell mit »snap start« , »snap stop« und »snap restart« kontrollieren.

Bild 2: Die Website uApp Explorer führt einen Katalog mit Snaps.

In den Ubuntu Store können Entwickler auch Snaps mit Vorab- oder Testversionen ihrer Software hochladen. Dies soll Anwendern und Administratoren die Möglichkeit geben, das Programm unkompliziert zu testen. Damit Nutzer des Stores nicht versehentlich eine Vorabversion eines Snaps einspielen, bietet der Store vier verschiedene Kanäle an: Standardmäßig holt Snap nur stabile Software aus dem "stable"-Channel. In den Kanälen "candidate" und "beta" liegen die Release Candidates und Beta-Versionen der Software. Schließlich gibt es noch den "edge"-Kanal, in dem Daily Builds bereitstehen. Wenn Sie eine Beta-Version installieren möchten, müssen Sie mit "--channel" explizit in den entsprechenden Kanal wechseln:

$ sudo snap install couchdb --channel=beta

Pakete packen

Entwickler erstellen Snaps mit dem Werkzeug "snapcraft", das die Anwendung und ihre Abhängigkeiten in ein komprimiertes "squashfs"-Dateisystem verpackt. In dem so geschnürten Snap liegt auch immer eine Textdatei "snap.yaml". Sie enthält Metadaten für die Snap-Paketverwaltung, wie etwa eine Beschreibung der Anwendung oder die benötigte Prozessorarchitektur. Des Weiteren bekommt das Snap darin einen Namen, über den die Benutzer später das Programm aufrufen.

Jedes Snap darf zudem mehrere Anwendungen enthalten. Das ist etwa bei Datenbanken wie MySQL nützlich, bei denen das Snap neben dem eigentlichen Datenbank-Daemon auch die verschiedenen Kommandozeilenprogramme enthält. In "snap.yaml" erhält jedes dieser Programme einen eigenen Namen, der nicht mit dem Dateinamen des Binary übereinstimmen muss. Anwender rufen dann die einzelnen Programme über den entsprechenden Namen auf, dem sie zusätzlich den Namen des Snaps voranstellen. Für dieses etwas verwirrende Konzept stellt Canonical mit dem Snap "hello-world" ein einfaches Beispiel bereit, dessen "snap.yaml" Listing 1 zeigt.

Listing 1: Inhalt von snap.yaml für das "hello-world"-Snap



name: hello-world
version: 6.3
architectures: [ all ]
summary: The 'hello-world' of snaps
description: |
      This is a simple snap example that includes a few interesting binaries to demonstrate snaps and their confinement.
      * hello-world.env - dump the env of commands run inside app sandbox
      * hello-world.evil - show how snappy sandboxes binaries
      * hello-world.sh - enter interactive shell that runs in app sandbox 
      * hello-world - simply output text
apps:
    env:
      command: bin/env
    evil:
      command: bin/evil
    sh:
      command: bin/sh
    hello-world:
      command: bin/ech

Nachdem Sie das Snap mit »sudo snap install hello-world« installiert haben, können Sie die im Snap enthaltene Shell ("bin/sh") mit »hello-world.sh« starten. Im Gegensatz zu einer normalen per "/bin/sh" gestarteten Shell läuft die so geöffnete Shell in einer abgeschotteten Sandbox. Wenn Sie nur hello-world aufrufen, startet automatisch das Programm, das in "snap.yaml" den gleichen Namen wie das Snap trägt. Im "hello-world"-Beispiel startet folglich "echo". Mit diesem Mechanismus kann der Entwickler unter anderem geschickt verstecken, dass im Hintergrund nicht ein Programm, sondern etwa nur ein Shell-Skript startet.

Ähnliche Artikel

comments powered by Disqus

Artikel der Woche

Eigene Registry für Docker-Images

Wer selber Docker-Images herstellt, braucht auch eine eigene Registry. Diese gibt es ebenfalls als Docker-Image, aber nur mit eingeschränkter Funktionalität. Mit einem Auth-Server wird daraus ein brauchbares Repository für Images. (mehr)
Einmal pro Woche aktuelle News, kostenlose Artikel und nützliche ADMIN-Tipps.
Ich habe die Datenschutzerklärung gelesen und bin einverstanden.

Konfigurationsmanagement

Ich konfiguriere meine Server

  • von Hand
  • mit eigenen Skripts
  • mit Puppet
  • mit Ansible
  • mit Saltstack
  • mit Chef
  • mit CFengine
  • mit dem Nix-System
  • mit Containern
  • mit anderer Konfigurationsmanagement-Software

Ausgabe /2023