Snap-Packages unter Gentoo nutzen

Einer der großen Vorteile von Snap-Packages ist es, dass diese im Gegensatz zu „klassischen“ Paketen nicht nur unter einer Linux-Distribution ausgeführt werden können, sondern ohne weitere Anpassung mit einer Vielzahl an Distributionen kompatibel sind. Viele Distributionen bringen den für den Snap-Support erforderlichen snapd-Daemon bereits mit.

Auch unter Gentoo können Snap-Packages genutzt werden. Selbst der Paketbau mit snapcraft und multipass bzw. LXD funktioniert.

Voraussetzungen

Vorab: systemd ist zwingende Voraussetzung, da snapd nicht mit OpenRC kompatibel ist. Da für die Nutzung von snapcraft erweiterte Rechte nötig sind, sollte sudo ebenfalls installiert und einsatzbereit sein.

Zur Anforderung der nötigen Ressourcen und Berechtigungen auf dem Host-System nutzt snapd das AppArmor-Framework. Bei der Nutzung eines eigenen Kernels ist es daher unter Umständen erforderlich, die AppArmor-Unterstützung in der Kernel-Konfiguration explizit zu aktivieren. Die noch relativ neuen Binärpakete bringen die Unterstützung hierfür jedoch bereits mit.

Auf die Migration eines Gentoo-Systems auf systemd werde ich an dieser Stelle nicht eingehen. Das Thema ist so umfangreich, dass ich hierzu einen eigenen Artikel veröffentlichen werde.

AppArmor und systemd

Um snapd nutzen zu können, muss systemd mit den USE-Flags policykit und apparmor gebaut werden, libseccomp mit static-libs. Dazu werden in die Datei /etc/portage/package.use folgende Einträge hinzugefügt:

sys-apps/systemd policykit apparmor
sys-libs/libseccomp static-libs

Das apparmor-Paket ist standardmäßig maskiert, weshalb wir das Paket in der Datei /etc/portage/package.accept_keywords explizit freigeben, wo wir auch direkt das snapd-Paket demaskieren.

sys-libs/libapparmor ~amd64
sys-apps/apparmor ~amd64
app-emulation/snapd ~amd64

Im nächsten Schritt werden systemd und AppArmor via

emerge sys-apps/systemd
emerge sys-apps/apparmor

(neu) gebaut.

Damit AppArmor nach dem Systemstart zur Verfügung steht, ist noch eine Anpassung der Bootloader-Konfiguration erforderlich. Dazu wird in der Datei /etc/default/grub die folgende Zeile hinzugefügt bzw. ergänzt:

GRUB_CMDLINE_LINUX_DEFAULT="apparmor=1 security=apparmor"

Die GRUB-Konfiguration wird anschließend mit dem Befehl

grub-mkconfig -o /boot/grub/grub.cfg

neu geschrieben und der Rechner einmalig neu gestartet.

Die Installation von snapd

Anschließend installieren wir snapd und aktivieren auch gleich die benötigten systemd-Units:

emerge --ask app-emulation/snapd
systemctl enable --now snapd
systemctl enable --now snapd.socket
systemctl enable --now snapd.apparmor

Die Installation von snapd ist damit abgeschlossen.

Zusätzliche Berechtigungen für snapcraft

Damit auch unprivilegierte Benutzer neue Snaps mithilfe von snapcraft erstellen können, müssen diese noch zu den Benutzergruppen adm und lxd hinzugefügt werden:

gpasswd --add benutzername adm
gpasswd --add benutzername lxd

2 Kommentare

    1. Sehr cool, danke für den Hinweis! Muss ich mir doch glatt noch einmal anschauen, ob die Installations-Anweisungen so noch aktuell sind – intial ist der Artikel entstanden, als man noch das Overlay dafür gebraucht hat 🙂

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.