From 23250f84b22c40613ce6379c3dd1d73c0842a7ba 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 --- Makefile | 3 --- archlinux/PKGBUILD.install | 8 ++++++++ debian/qubes-core-agent.install | 1 - debian/qubes-core-agent.postinst | 6 ++++++ rpm_spec/core-agent.spec.in | 9 ++++++--- 5 files changed, 20 insertions(+), 7 deletions(-) diff --git a/Makefile b/Makefile index cbd4e0d..203b794 100644 --- a/Makefile +++ b/Makefile @@ -299,9 +299,6 @@ install-common: install-doc 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)$(BINDIR)/qubes-desktop-run diff --git a/archlinux/PKGBUILD.install b/archlinux/PKGBUILD.install index 1d5c357..258756b 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 9ecb769..226c051 100644 --- a/debian/qubes-core-agent.install +++ b/debian/qubes-core-agent.install @@ -3,7 +3,6 @@ etc/apt/apt.conf.d/00notify-hook etc/apt/apt.conf.d/70no-unattended etc/apt/sources.list.d/qubes-r4.list etc/apt/trusted.gpg.d/qubes-archive-keyring.gpg -etc/dconf/profile/user etc/dconf/db/local.d/dpi etc/default/grub.d/30-qubes.cfg etc/fstab diff --git a/debian/qubes-core-agent.postinst b/debian/qubes-core-agent.postinst index 64ae85a..a3baf49 100755 --- a/debian/qubes-core-agent.postinst +++ b/debian/qubes-core-agent.postinst @@ -181,6 +181,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-agent.spec.in b/rpm_spec/core-agent.spec.in index 5d4d83e..86ee215 100644 --- a/rpm_spec/core-agent.spec.in +++ b/rpm_spec/core-agent.spec.in @@ -342,6 +342,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 @@ -586,9 +592,6 @@ rm -f %{name}-%{version} %config(noreplace) /etc/yum.repos.d/qubes-r4.repo /etc/yum/pluginconf.d/yum-qubes-hooks.conf %config(noreplace) /etc/dnf/plugins/qubes-hooks.conf -%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