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-containers/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-containers/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
Mittlerweile gibt es ein Package im offiziellen Portage-tree:
https://packages.gentoo.org/packages/app-emulation/snapd
ph0llux.
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 🙂