Snap-Packages unter Gentoo nutzen » serra.me

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 – wenn auch mit ein wenig Aufwand und unter Beachtung einiger Voraussetzungen. Selbst der Paketbau mit snapcraft und multipass bzw. LXD funktioniert. Da snapd noch nicht in den offiziellen Paketquellen von Gentoo enthalten ist, nutzen wir das von Jesse „zigford“ Harris bereitgestellte Overlay.

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_LINIX_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

Zum Einbinden des Overlays empfehle ich Nutzung von layman. Mit den folgenden Befehlen installieren wir layman, binden das snapd-Overlay ein und installieren snapd:

emerge app-portage/layman
layman -L
layman -a snapd
emerge --sync
emerge --ask app-emulation/snapd

Um die Installation abzuschließen, aktivieren und starten wir noch die benötigten systemd-Units:

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

Schreibe einen Kommentar

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