From 9275d2c4a48b71b5706139bca9aa8d14a2a1a04c Mon Sep 17 00:00:00 2001 From: qpismont Date: Sun, 1 Nov 2026 22:46:33 +0100 Subject: [PATCH] Install Flatpak in an isolated transaction Copy the SELinux store before installing Flatpak to avoid overlayfs rename failures, then verify the compiled policy includes its helper label. --- Containerfile | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/Containerfile b/Containerfile index a00456e..3107712 100644 --- a/Containerfile +++ b/Containerfile @@ -58,15 +58,22 @@ RUN dnf install -y --refresh --setopt=tsflags=nodocs \ gstreamer1-vaapi \ ffmpeg \ && (dnf remove -y alacritty waybar gnome-software gnome-software-rpm-ostree gnome-system-monitor showtime decibels snapshot PackageKit PackageKit-gstreamer-plugin PackageKit-command-not-found toolbox || true) \ - && dnf install -y flatpak \ - && dnf reinstall -y flatpak-selinux \ && dnf clean all -#Verifie que la politique SELinux connait bien le label du helper flatpak. Sans ce -#module (paquet flatpak-selinux), le binaire reste "unlabeled_t", systemd refuse -#de l'executer (203/EXEC) et /usr etant en lecture seule au runtime, l'image serait -#inutilisable pour flatpak. Mieux vaut un build qui echoue qu'une image cassee. -RUN matchpathcon /usr/libexec/flatpak-system-helper | grep -q flatpak_helper_exec_t +#Flatpak : installe seul, dans sa propre couche (comme avant le passage a GNOME), pour +#que le scriptlet de flatpak-selinux (qui enregistre le module SELinux) tourne dans une +#petite transaction isolee. Le store SELinux est d'abord recopie dans la couche courante : +#sur overlayfs, libsemanage renomme des repertoires de la couche d'origine, ce qui peut +#echouer ("Directory not empty") et faire annuler la transaction sans erreur bloquante. +RUN cp -a /etc/selinux/targeted /tmp/selinux-store \ + && rm -rf /etc/selinux/targeted \ + && mv /tmp/selinux-store /etc/selinux/targeted +RUN dnf install -y flatpak && dnf clean all + +#Garde-fou : /usr est en lecture seule sur le systeme deploye, un helper flatpak mal +#etiquete (unlabeled_t) ne peut donc pas etre repare apres coup. On verifie que la +#politique COMPILEE connait bien le type, sinon le build echoue. +RUN grep -qa flatpak_helper_exec_t /etc/selinux/targeted/policy/policy.* #Configuration de GDM : clavier FR (GNOME Initial Setup cree le premier compte au boot) COPY config/xorg-keyboard.conf /etc/X11/xorg.conf.d/00-keyboard.conf