Zahlungsmethoden Abuse

Wie man ein Snap-Paket erstellt Ubuntu 16

11.06.2021, 19:26

Snap ist eine Technologie, die von Canonical entwickelt wurde, um die Installation von Software in der Ubuntu-Distribution zu erleichtern. Es handelt sich um eine relativ neue Entwicklung. Die Entwicklung von Snap erstreckte sich über mehrere Jahre, aber erst mit der Veröffentlichung von Ubuntu 16.04 wurde sie in einen Zustand versetzt, in dem sie für die breite Masse nutzbar ist.

Der Hauptvorteil von Snap ist die Möglichkeit, Programme ohne Abhängigkeiten zu installieren. Alle erforderlichen Bibliotheken sind bereits im Paket mit dem Programm enthalten, und das System muss nichts tun, um es auszuführen. Bei der Aktualisierung muss der Benutzer nur ein Snap-Paket aktualisieren, ohne Änderungen am System vorzunehmen, und kann im Falle von Fehlern und Störungen das Paket auf die vorherige Version zurücksetzen. Im Internet stößt man oft auf Diskussionen unter den Benutzern darüber, ob die Snap-Technologie wirklich gut ist oder ob sie zugunsten von Deb-Paketen aufgegeben werden sollte. Aber die Zeit und das Testen werden es zeigen. Als Nächstes werden wir uns in diesem Artikel mit der Erstellung von Snap-Paketen befassen. Die Erstellung von Snap-Paketen ist ein wenig einfacher als die von Deb-Paketen.

Erstellen von Snap-Paketen in Ubuntu 16.04

Um Snap-Pakete zu erstellen, werden wir ein spezielles Werkzeug namens Snapcraft verwenden. Dies ist das offizielle Tool zur Erstellung von Snap-Paketen, das es dem Entwickler erlaubt, Programme zu paketieren, um die notwendigen Dateien im gesamten System zu erstellen. Mit Snapcraft können Sie nicht nur Dateien kopieren, sondern auch den Quellcode herunterladen und das Programm erstellen.

Sehen wir uns nun an, wie man Snap-Pakete am Beispiel der Anwendung Samplenote erstellt.

Installieren Sie zunächst Snapcraft. Um die neueste Version zu erhalten, fügen Sie ein PPA zu unserem System hinzu:

$ sudo add-apt-repository ppa:snappy-dev/tools

Aktualisieren Sie nun die Paketliste und installieren Sie das Programm:

$ sudo apt-get update
$ sudo apt-get install snapcraft

Wenn die Installation von Snapcraft abgeschlossen ist, können wir uns den Quellcode des Programms besorgen. Laden Sie zunächst die Quellen von GitHub herunter und entpacken Sie sie:

$ wget https://github.com/Automattic/simplenote-electron/releases/download/v1.0.1/Simplenote-linux-x64.1.0.1.tar.gz
$ tar xvzf Simplenote-linux-x64.1.0.1.tar.gz

Da das Programm nicht kompiliert werden muss, ist unsere Aufgabe ein wenig einfacher. Wechseln Sie in den Ordner mit dem Programm und initialisieren Sie dort die Snapcraft-Build-Umgebung:

$ cd Simplenote-linux-x64
$ snapcraft init

Nach der Ausführung des letzten Befehls wird die Datei snapcraft.yml im Ordner erscheinen. Bearbeiten Sie diese Datei und konfigurieren Sie den Prozess der Erstellung unseres Snap-Pakets. Wir benötigen eine Datei mit dem folgenden Inhalt:

name: simplenote
version: 1.0.1
summary: The simplest way to keep notes.
description: The simplest way to keep notes. Light, clean, and free.
apps:
simplenote:
command: usr/bin/wrapper
plugs:
- unity7
- opengl
- network
parts:
simplenote:
plugin: copy
stage-packages:
- libnss3
- fontconfig-config
- gnome-themes-standard
files:
Simplenote: Simplenote
wrapper: usr/bin/wrapper
icudtl.dat: icudtl.dat
snapshot_blob.bin: snapshot_blob.bin
natives_blob.bin: natives_blob.bin
resources*: resources
libnode.so: usr/lib/x86_64-linux-gnu/libnode.so
libffmpeg.so: usr/lib/x86_64-linux-gnu/libffmpeg.so

Die ersten vier Zeilen enthalten Informationen über das Paket selbst, den Namen des Programms, die Version und eine kurze und vollständige Beschreibung.

Command - dies ist der Befehl zum Starten des Programms, außerdem werden wir den Skript-Warpper verwenden, da wir zusätzliche Umgebungsvariablen angeben müssen.

Plugs - das sind die Schnittstellen, die vom Programm genutzt werden können. Der Punkt ist, dass Snap-Programme in einer isolierten Umgebung arbeiten, von wo aus sie keinen Zugriff auf Hardware und persönliche Daten haben. Damit unser Programm richtig funktioniert, muss es Zugang zu den Schnittstellen Opengl, Unity7 und Netzwerk haben.

Sie können die verfügbaren Schnittstellen und die Programme, die sie verwenden, sehen, indem Sie den Befehl ausführen:

$ snap interfaces

In der Sektion parts müssen Sie die Programmdateien angeben. Genauer gesagt, was snapcraft tun muss, wenn es ein Paket erstellt. Da wir nichts kompilieren müssen, verwenden wir das Kopier-Plugin, um Dateien zu kopieren. Die Dateien, die kopiert werden müssen, sind im Abschnitt files aufgeführt. Dabei handelt es sich nicht nur um ausführbare Dateien, sondern auch um alle notwendigen Bibliotheken, so dass das Programm alle Komponenten erhält, die es benötigt.

Das Format des Eintrags ist wie folgt:

system_file: snap_package_file_path

Es gibt einen nicht standardisierten Eintrag:

resources*: resources

Das Platzhalterzeichen * erlaubt es, das gesamte Verzeichnis zu kopieren. Um zu vermeiden, dass alle Dateien vom System kopiert werden, gibt es im Abschnitt site-packages eine Option, mit der Sie dem Programm mitteilen können, welche Pakete im snap-Paket installiert werden sollen, in unserem Fall sind das libnss3, fontconfig-config-config und gnome-themes-standard.

Um zu sehen, welche Bibliotheken das Programm verwendet, können Sie den Befehl verwenden:

ldd Simplenote | grep Simplenote
libnode.so => /home/sergiy/test/Simplenote/Simplenote-linux-x64/./libnode.so (0x00007f05fb477000)
libffmpeg.so => /home/sergiy/test/Simplenote/Simplenote-linux-x64/./libffmpeg.so (0x00007f05f61ec000)

Wichtig ist, dass diese Bibliotheken mit dem Programm ausgeliefert werden, wir müssen sie also in der Konfigurationsdatei snapcraft.yaml angeben. Alle anderen Bibliotheken sind auf dem System verfügbar und werden von snapcraft automatisch erkannt.

Als nächstes müssen wir die Wrapper-Datei erstellen:

!/bin/sh
export FONTCONFIG_PATH=$SNAP/etc/fonts
export FONTCONFIG_FILE=$SNAP/etc/fonts/fonts.conf
export XDG_DATA_HOME=$SNAP/usr/share
export LD_LIBRARY_PATH=$SNAP_LIBRARY_PATH:$SNAP/usr/lib/x86_64-linux-gnu/
exec "$SNAP/Simplenote" "$@"

Das ist hier ganz einfach - ein Bash-Skript. Legen Sie die Pfade für die Schriftarten fest und sagen Sie dem Programm, wo es nach den Bibliotheken suchen soll, damit libnote. so und libffmpeg.so erfolgreich gefunden werden. Und die letzte Zeile startet simplenote.

Als Nächstes müssen Sie diese Datei ausführbar machen:

$ chmod +x wrapper

Führen Sie aus, um mit der Erstellung des Pakets zu beginnen:

$ snapcraft

Der Build kann einige Zeit in Anspruch nehmen, und sobald der Build abgeschlossen ist, können Sie das Paket installieren:

$ sudo snap install simplenote_1.0.1_amd64.snap

Sie können den üblichen Befehl verwenden, um das Programm auszuführen:

$ simplenote

Jetzt ist das Programm installiert. Sie können genau dieselbe Methode zur Erstellung von Snap-Paketen verwenden, um Ihre Anwendungen zu paketieren.