PostgreSQL 16: Add sysusers.d config file to allow rpm to create users/groups automat...
authorDevrim Gunduz <devrim@gunduz.org>
Mon, 22 Sep 2025 00:38:30 +0000 (19:38 -0500)
committerDevrim Gunduz <devrim@gunduz.org>
Mon, 22 Sep 2025 00:38:30 +0000 (19:38 -0500)
rpm/redhat/main/non-common/postgresql-16/F-43/postgresql-16-sysusers.conf [new symlink]
rpm/redhat/main/non-common/postgresql-16/main/postgresql-16-sysusers.conf [new file with mode: 0644]
rpm/redhat/main/non-common/postgresql-16/main/postgresql-16.spec

diff --git a/rpm/redhat/main/non-common/postgresql-16/F-43/postgresql-16-sysusers.conf b/rpm/redhat/main/non-common/postgresql-16/F-43/postgresql-16-sysusers.conf
new file mode 120000 (symlink)
index 0000000..5314f21
--- /dev/null
@@ -0,0 +1 @@
+../main/postgresql-16-sysusers.conf
\ No newline at end of file
diff --git a/rpm/redhat/main/non-common/postgresql-16/main/postgresql-16-sysusers.conf b/rpm/redhat/main/non-common/postgresql-16/main/postgresql-16-sysusers.conf
new file mode 100644 (file)
index 0000000..aa3389d
--- /dev/null
@@ -0,0 +1 @@
+u postgres 26 'PostgreSQL Server' /var/lib/pgsql /usr/bin/bash
index b0138799268e8a665c3a9ac20f498b894b63f02a..231df8640866b5db803a3684afe5486fd2128ca7 100644 (file)
 %{!?ldap:%global ldap 1}
 %{!?nls:%global nls 1}
 %{!?pam:%global pam 1}
-
 %{!?pltcl:%global pltcl 1}
 %{!?plperl:%global plperl 1}
 %{!?plpython3:%global plpython3 1}
 %{!?ssl:%global ssl 1}
+%if 0%{?fedora} >= 43
+%{!?sysuserd:%global sysuserd 1}
+%else
+%{!?sysuserd:%global sysuserd 0}
+%endif
 %{!?test:%global test 1}
 %{!?runselftest:%global runselftest 0}
 %{!?uuid:%global uuid 1}
@@ -81,6 +85,9 @@ Source17:     %{sname}-%{pgmajorversion}-setup
 Source10:      %{sname}-%{pgmajorversion}-check-db-dir
 Source18:      %{sname}-%{pgmajorversion}.service
 Source19:      %{sname}-%{pgmajorversion}-tmpfiles.d
+%if %sysuserd
+Source20:      %{sname}-%{pgmajorversion}-sysusers.conf
+%endif
 
 Patch1:                %{sname}-%{pgmajorversion}-rpm-pgsql.patch
 Patch3:                %{sname}-%{pgmajorversion}-conf.patch
@@ -277,7 +284,9 @@ PostgreSQL server.
 Summary:       The programs needed to create and run a PostgreSQL server
 Requires:      %{name}%{?_isa} = %{version}-%{release}
 Requires:      %{name}-libs%{?_isa} = %{version}-%{release}
+%if ! %sysuserd
 Requires(pre): /usr/sbin/useradd /usr/sbin/groupadd
+%endif
 Requires:      util-linux
 # for /sbin/ldconfig
 Requires(post):                glibc
@@ -695,6 +704,11 @@ touch -r %{SOURCE10} %{sname}-%{pgmajorversion}-check-db-dir
 %{__install} -d -m 755 %{buildroot}%{pgbaseinstdir}/share/
 %{__install} -m 700 %{SOURCE9} %{buildroot}%{pgbaseinstdir}/share/
 
+%if %sysuserd
+# Install sysusers.d config file to allow rpm to create users/groups automatically.
+%{__install} -m 0644 -D %{SOURCE20} %{buildroot}%{_sysusersdir}/%{sname}%{pgpackageversion}-pgdg.conf
+%endif
+
 %if %test
        # tests. There are many files included here that are unnecessary,
        # but include them anyway for completeness. We replace the original
@@ -792,10 +806,13 @@ cat initdb-%{pgmajorversion}.lang pg_ctl-%{pgmajorversion}.lang psql-%{pgmajorve
 cat postgres-%{pgmajorversion}.lang pg_resetwal-%{pgmajorversion}.lang pg_checksums-%{pgmajorversion}.lang pg_verifybackup-%{pgmajorversion}.lang pg_controldata-%{pgmajorversion}.lang plpgsql-%{pgmajorversion}.lang pg_test_timing-%{pgmajorversion}.lang pg_test_fsync-%{pgmajorversion}.lang pg_archivecleanup-%{pgmajorversion}.lang pg_waldump-%{pgmajorversion}.lang pg_rewind-%{pgmajorversion}.lang pg_upgrade-%{pgmajorversion}.lang > pg_server.lst
 %endif
 
+%if ! %sysuserd
+# This is replaced by sysusers.d in recent OSes:
 %pre server
 groupadd -g 26 -o -r postgres >/dev/null 2>&1 || :
 useradd -M -g postgres -o -r -d /var/lib/pgsql -s /bin/bash \
        -c "PostgreSQL Server" -u 26 postgres >/dev/null 2>&1 || :
+%endif
 
 %post server
 /sbin/ldconfig
@@ -1115,6 +1132,9 @@ fi
 %{pgbaseinstdir}/bin/%{sname}-%{pgmajorversion}-setup
 %{_bindir}/%{sname}-%{pgmajorversion}-setup
 %{pgbaseinstdir}/bin/%{sname}-%{pgmajorversion}-check-db-dir
+%if %sysuserd
+%{_sysusersdir}/%{sname}%{pgpackageversion}-pgdg.conf
+%endif
 %{_tmpfilesdir}/%{sname}-%{pgmajorversion}.conf
 %{_unitdir}/%{sname}-%{pgmajorversion}.service
 %if %pam
@@ -1243,6 +1263,8 @@ fi
 * Sun Sep 21 2025 Devrim Gunduz <devrim@gunduz.org> - 16.10-3PGDG
 - Add a temp patch from upstream to fix builds on Fedora 43 (LLVM 21).
   Will be removed in next minor release set.
+- Add sysusers.d config file to allow rpm to create users/groups automatically.
+  Only for Fedora 43+.
 
 * Wed Aug 27 2025 Devrim Gunduz <devrim@gunduz.org> - 16.10-2PGDG
 - Rebuild against new GCC on Fedora 42