From 503a7fdf594eafef9a816620a087e5c992d15252 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?= Date: Wed, 2 May 2018 02:57:37 +0200 Subject: [PATCH] Create /etc/dconf/profile/user dynamically, if not present The /etc/dconf/profile/user file in some distributions is part of dconf package, in some not. There are even cases where it changes between package versions (Fedora 27 don't have it, but Fedora 28 do). Also, base Debian Stretch don't have it, but Kali Linux based on it do. To avoid overly complex dependency handling, create the file dynamically on package installation if it's missing in that particular case. The file content is canonical: user-db:user system-db:local Fixes QubesOS/qubes-issues#3834 (cherry picked from commit 23250f84b22c40613ce6379c3dd1d73c0842a7ba) --- Makefile | 3 --- archlinux/PKGBUILD.install | 8 ++++++++ debian/qubes-core-agent.install | 1 - debian/qubes-core-agent.postinst | 6 ++++++ rpm_spec/core-vm.spec | 9 ++++++--- 5 files changed, 20 insertions(+), 7 deletions(-) diff --git a/Makefile b/Makefile index 8d81d54..aa8d801 100644 --- a/Makefile +++ b/Makefile @@ -282,9 +282,6 @@ install-common: install -d $(DESTDIR)/usr/share/nautilus-python/extensions install -m 0644 qubes-rpc/*_nautilus.py $(DESTDIR)/usr/share/nautilus-python/extensions -ifeq ($(findstring CentOS,$(shell cat /etc/redhat-release)),) - install -D -m 0644 misc/dconf-profile-user $(DESTDIR)/etc/dconf/profile/user -endif install -D -m 0644 misc/dconf-db-local-dpi $(DESTDIR)/etc/dconf/db/local.d/dpi install -D -m 0755 misc/qubes-desktop-run $(DESTDIR)/usr/bin/qubes-desktop-run diff --git a/archlinux/PKGBUILD.install b/archlinux/PKGBUILD.install index a8b9363..4dd23a7 100644 --- a/archlinux/PKGBUILD.install +++ b/archlinux/PKGBUILD.install @@ -82,6 +82,14 @@ update_qubesconfig() { #/usr/lib/qubes/update-proxy-configs # Archlinux pacman configuration is handled in update_finalize + if ! [ -r /etc/dconf/profile/user ]; then + mkdir -p /etc/dconf/profile + echo "user-db:user" >> /etc/dconf/profile/user + echo "system-db:local" >> /etc/dconf/profile/user + fi + + dconf update &> /dev/null || : + # Location of files which contains list of protected files mkdir -p /etc/qubes/protected-files.d # shellcheck source=init/functions diff --git a/debian/qubes-core-agent.install b/debian/qubes-core-agent.install index 9e8aefc..fa1e69c 100644 --- a/debian/qubes-core-agent.install +++ b/debian/qubes-core-agent.install @@ -64,7 +64,6 @@ etc/qubes-rpc/qubes.GetImageRGBA etc/polkit-1/rules.d/00-qubes-allow-all.rules etc/polkit-1/localauthority/50-local.d/qubes-allow-all.pkla etc/pam.d/su.qubes -etc/dconf/profile/user etc/dconf/db/local.d/dpi etc/apt/trusted.gpg.d/qubes-archive-keyring.gpg etc/apt/apt.conf.d/70no-unattended diff --git a/debian/qubes-core-agent.postinst b/debian/qubes-core-agent.postinst index 596cf1d..2b48af6 100755 --- a/debian/qubes-core-agent.postinst +++ b/debian/qubes-core-agent.postinst @@ -189,6 +189,12 @@ case "${1}" in glib-compile-schemas /usr/share/glib-2.0/schemas || true + if ! [ -r /etc/dconf/profile/user ]; then + mkdir -p /etc/dconf/profile + echo "user-db:user" >> /etc/dconf/profile/user + echo "system-db:local" >> /etc/dconf/profile/user + fi + if [ -x /usr/bin/dconf ]; then dconf update fi diff --git a/rpm_spec/core-vm.spec b/rpm_spec/core-vm.spec index 02bc889..79bb952 100644 --- a/rpm_spec/core-vm.spec +++ b/rpm_spec/core-vm.spec @@ -282,6 +282,12 @@ if test -f /etc/yum.conf && ! grep -q '/etc/yum\.conf\.d/qubes-proxy\.conf' /etc echo 'include=file:///etc/yum.conf.d/qubes-proxy.conf' >> /etc/yum.conf fi +if ! [ -r /etc/dconf/profile/user ]; then + mkdir -p /etc/dconf/profile + echo "user-db:user" >> /etc/dconf/profile/user + echo "system-db:local" >> /etc/dconf/profile/user +fi + dconf update &> /dev/null || : # And actually setup the proxy usage in package managers @@ -504,9 +510,6 @@ rm -f %{name}-%{version} %if %{fedora} < 22 /etc/yum/post-actions/qubes-trigger-sync-appmenus.action %endif -%if 0%{?fedora} >= 23 -%config(noreplace) /etc/dconf/profile/user -%endif %config(noreplace) /etc/dconf/db/local.d/dpi /usr/lib/systemd/system/user@.service.d/90-session-stop-timeout.conf /usr/sbin/qubes-serial-login