Accepting request 1111591 from server:database:postgresql
- Bump default to 16 on Factory. - Bump major version to prepare for PostgreSQL 16, but keep default at 15 for now on Factory. - boo#1122892: Add a sysconfig variable for initdb. - Overhaul postgresql-README.SUSE and move it from the binary package to the noarch wrapper package. - bsc#1179231: Add an explanation for the /tmp -> /run/postgresql move and permission change. - Add postgresql-README as a separate source file. - bsc#1209208: Drop hard dependency on systemd OBS-URL: https://build.opensuse.org/request/show/1111591 OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/postgresql?expand=0&rev=67
This commit is contained in:
commit
ef93688484
3
postgresql-README
Normal file
3
postgresql-README
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
This is a dummy package to provide a dependency on the default
|
||||||
|
PostgreSQL version. For further information see the following file in
|
||||||
|
the postgresql package: /usr/share/doc/packages/postgresql/README.SUSE
|
110
postgresql-README.SUSE
Normal file
110
postgresql-README.SUSE
Normal file
@ -0,0 +1,110 @@
|
|||||||
|
PostgreSQL packages openSUSE and SUSE Linux Enterprise Server
|
||||||
|
=============================================================
|
||||||
|
|
||||||
|
This section describes the RPM package layout for PostgreSQL at
|
||||||
|
SUSE.
|
||||||
|
|
||||||
|
In certain situations (see "Upgrading PostgreSQL" below) it is needed
|
||||||
|
to have more than one version of PostgreSQL installed on a system at
|
||||||
|
the same time. For that SUSE has put the major version number into the
|
||||||
|
name of the package containing the respective PostgreSQL binaries,
|
||||||
|
e.g. postgresql14 or postgresql15. The package set for each major
|
||||||
|
version further consists of multiple subpackages containing different
|
||||||
|
aspects of a PostgreSQL installation such as postgresql14-server, or
|
||||||
|
postgresql15-contrib.
|
||||||
|
|
||||||
|
Inside the packages the files are moved from their standard locations
|
||||||
|
to a versioned location such as /usr/lib/postgresql14/bin or
|
||||||
|
/usr/lib/postgresql15/bin to avoid file conflicts. The
|
||||||
|
update-alternatives mechanism is used to create and maintain symbolic
|
||||||
|
links that cause one version (by default the highest installed
|
||||||
|
version) to re-appear in the standard locations.
|
||||||
|
|
||||||
|
There is also a set of unversioned packages (postgresql,
|
||||||
|
postgresql-server, etc.) that contains some common stuff that is
|
||||||
|
needed for all versions, like dependencies, scripts, or this
|
||||||
|
README. These packages also define the default version for a SUSE
|
||||||
|
product by recommending the respective binary packages.
|
||||||
|
|
||||||
|
By default, database data are stored under /var/lib/pgsql/data on SUSE
|
||||||
|
Linux.
|
||||||
|
|
||||||
|
|
||||||
|
Unix-Domain Socket Directory
|
||||||
|
============================
|
||||||
|
|
||||||
|
Traditionally a PostgreSQL server puts its unix domain sockets for
|
||||||
|
local client connections into the /tmp directory, which is not
|
||||||
|
intended for this kind of use and allows unprivileged users to start
|
||||||
|
rogue PostgreSQL servers. For that reason SUSE has moved the default
|
||||||
|
directory for these sockets to /run/postgresql and set the permissions
|
||||||
|
of that directory to only allow the postgres user and members of the
|
||||||
|
postgres group to start servers that have their sockets here.
|
||||||
|
|
||||||
|
A secondary socket is still also opened under /tmp for backwards
|
||||||
|
compatibility with old clients, but this is deprecated and should not
|
||||||
|
be used anymore in new deployments.
|
||||||
|
|
||||||
|
|
||||||
|
Upgrading PostgreSQL
|
||||||
|
====================
|
||||||
|
|
||||||
|
PostgreSQL databases are compatible among minor versions of the same
|
||||||
|
major version (e.g. 14.1, 14.2, 14.3), but need migration when
|
||||||
|
switching to a new major version (e.g. 14.x to 15.y).
|
||||||
|
|
||||||
|
Since version 9.1 PostgreSQL comes with the pg_upgrade tool that
|
||||||
|
simplifies and speeds up the migration of a PostgreSQL installation to
|
||||||
|
a new major version. Starting at version 11 logical replication
|
||||||
|
between two server instances provides anoter way of migrating a
|
||||||
|
PostgreSQL database to a new major version with minimal downtimes.
|
||||||
|
Before version 9.1 dump and restore was needed which is much slower,
|
||||||
|
but might still be usful in certain upgrade situations.
|
||||||
|
|
||||||
|
The following text will only explain migration through pg_upgrade. For
|
||||||
|
the other variants, please refer to the original documentation online
|
||||||
|
or in the respective postgresqlXX-docs package.
|
||||||
|
|
||||||
|
pg_upgrade needs to have the server binaries of both versions
|
||||||
|
available, so e.g. for migrating from version 14 to 15 both,
|
||||||
|
postgresql14-server and postgresql15-server need to be installed.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
The following preconditions have to be fulfilled before data migration
|
||||||
|
can be started:
|
||||||
|
|
||||||
|
1. If not already done, the packages of the old PostgreSQL version
|
||||||
|
must be upgraded to the new packaging scheme through a maintenance
|
||||||
|
update.
|
||||||
|
|
||||||
|
2. The packages of the new PostgreSQL major version need to be
|
||||||
|
installed. As pg_upgrade is contained in the contrib subpackage, that
|
||||||
|
one has to be installed as well, at least for the migration period.
|
||||||
|
|
||||||
|
3. Unless pg_upgrade is used in link mode, the server must have
|
||||||
|
enough free disk space to temporarily hold a copy of the database
|
||||||
|
files. If the database instance was installed in the default
|
||||||
|
location, the needed space in megabytes can be determined by running
|
||||||
|
the follwing command as root: "du -hs /var/lib/pgsql/data". If space
|
||||||
|
is tight, it might help to run the "VACUUM FULL" SQL command on each
|
||||||
|
database in the instance to be migrated, but be aware that it might
|
||||||
|
take very long.
|
||||||
|
|
||||||
|
The latest upstream documentation for pg_upgrade including step by
|
||||||
|
step instructions for performing a database migration can be found
|
||||||
|
online under https://www.postgresql.org/docs/current/pgupgrade.html ,
|
||||||
|
or locally under
|
||||||
|
file:///usr/share/doc/packages/postgresqlXX/html/pgupgrade.html , if
|
||||||
|
the postgresqlXX-docs package is installed. XX is a place holder for
|
||||||
|
the respective major version here.
|
||||||
|
|
||||||
|
NOTE: The online documentation starts with explaining how you can
|
||||||
|
install PostgreSQL from the upstream sources (which is not necessary
|
||||||
|
when you install the SUSE RPMs) and also uses other directory names
|
||||||
|
(/usr/local instead of the update-alternatives based path as described
|
||||||
|
above).
|
||||||
|
|
||||||
|
For background information about the inner workings of pg_upgrade and
|
||||||
|
a performance comparison with the old dump and restore method, see
|
||||||
|
http://momjian.us/main/writings/pgsql/pg_upgrade.pdf .
|
@ -5,6 +5,7 @@ test -f $PG_SYSCONFIG && . $PG_SYSCONFIG
|
|||||||
|
|
||||||
eval DATADIR=${POSTGRES_DATADIR:-~postgres/data}
|
eval DATADIR=${POSTGRES_DATADIR:-~postgres/data}
|
||||||
OPTIONS=${POSTGRES_OPTIONS}
|
OPTIONS=${POSTGRES_OPTIONS}
|
||||||
|
INITDB_OPTS=${POSTGRES_INITDB_OPTS}
|
||||||
PIDFILE=$DATADIR/postmaster.pid
|
PIDFILE=$DATADIR/postmaster.pid
|
||||||
|
|
||||||
#
|
#
|
||||||
@ -48,8 +49,8 @@ case "$1" in
|
|||||||
if [ ! -f $DATADIR/PG_VERSION ]; then
|
if [ ! -f $DATADIR/PG_VERSION ]; then
|
||||||
test -n "$POSTGRES_LANG" && export LC_ALL="$POSTGRES_LANG"
|
test -n "$POSTGRES_LANG" && export LC_ALL="$POSTGRES_LANG"
|
||||||
install -d -m 700 ${DATADIR} &&
|
install -d -m 700 ${DATADIR} &&
|
||||||
echo "Initializing PostgreSQL $VERSION at location ${DATADIR}"
|
echo "Initializing PostgreSQL $VERSION at location ${DATADIR} using options \"$INITDB_OPTS\""
|
||||||
/usr/bin/initdb --auth=ident $DATADIR > initlog 2>&1 || {
|
/usr/bin/initdb $INITDB_OPTS $DATADIR > initlog 2>&1 || {
|
||||||
echo "Initialisation failed. See $PWD/initlog ."
|
echo "Initialisation failed. See $PWD/initlog ."
|
||||||
exit 1
|
exit 1
|
||||||
}
|
}
|
||||||
|
@ -49,3 +49,19 @@ POSTGRES_TIMEOUT="600"
|
|||||||
# If unset or empty $RC_LANG from /etc/sysconfig/language is used.
|
# If unset or empty $RC_LANG from /etc/sysconfig/language is used.
|
||||||
#
|
#
|
||||||
POSTGRES_LANG=""
|
POSTGRES_LANG=""
|
||||||
|
|
||||||
|
## Path: Applications/PostgreSQL
|
||||||
|
## Description: The PostgreSQL Database System
|
||||||
|
## Type: string()
|
||||||
|
## Default: "--auth=ident"
|
||||||
|
## ServiceRestart: ""
|
||||||
|
#
|
||||||
|
# When PostgreSQL gets started while no database cluster exists under
|
||||||
|
# the directory stored in the POSTGRES_DATADIR variable, the initdb
|
||||||
|
# tool gets called with that directory to initialize a new cluster.
|
||||||
|
# Additional options can be passed to initdb via this variable.
|
||||||
|
# Alternatively initdb can be called manually to initialize the
|
||||||
|
# database cluster prior to starting the PostgreSQL server for the
|
||||||
|
# first time.
|
||||||
|
#
|
||||||
|
POSTGRES_INITDB_OPTS="--auth=ident"
|
||||||
|
@ -1,3 +1,33 @@
|
|||||||
|
-------------------------------------------------------------------
|
||||||
|
Thu Sep 14 13:03:29 UTC 2023 - Reinhard Max <max@suse.com>
|
||||||
|
|
||||||
|
- Bump default to 16 on Factory.
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Mon Aug 7 13:05:52 UTC 2023 - Reinhard Max <max@suse.com>
|
||||||
|
|
||||||
|
- Bump major version to prepare for PostgreSQL 16, but keep
|
||||||
|
default at 15 for now on Factory.
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Tue May 23 11:45:10 UTC 2023 - Reinhard Max <max@suse.com>
|
||||||
|
|
||||||
|
- boo#1122892: Add a sysconfig variable for initdb.
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Mon May 15 14:17:11 UTC 2023 - Reinhard Max <max@suse.com>
|
||||||
|
|
||||||
|
- Overhaul postgresql-README.SUSE and move it from the binary
|
||||||
|
package to the noarch wrapper package.
|
||||||
|
- bsc#1179231: Add an explanation for the /tmp -> /run/postgresql
|
||||||
|
move and permission change.
|
||||||
|
- Add postgresql-README as a separate source file.
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Mon Mar 27 17:10:16 UTC 2023 - Reinhard Max <max@suse.com>
|
||||||
|
|
||||||
|
- bsc#1209208: Drop hard dependency on systemd
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Mon Jan 9 09:22:55 UTC 2023 - Reinhard Max <max@suse.com>
|
Mon Jan 9 09:22:55 UTC 2023 - Reinhard Max <max@suse.com>
|
||||||
|
|
||||||
|
@ -15,8 +15,8 @@
|
|||||||
# Please submit bugfixes or comments via http://bugs.opensuse.org/
|
# Please submit bugfixes or comments via http://bugs.opensuse.org/
|
||||||
#
|
#
|
||||||
|
|
||||||
%define pgmajor 15
|
%define pgmajor 16
|
||||||
%define defaultpackage postgresql%pgmajor
|
%define defaultpackage postgresql16
|
||||||
|
|
||||||
%if ! %{defined _rpmmacrodir}
|
%if ! %{defined _rpmmacrodir}
|
||||||
%define _rpmmacrodir %{_rpmconfigdir}/macros.d
|
%define _rpmmacrodir %{_rpmconfigdir}/macros.d
|
||||||
@ -84,6 +84,8 @@ Source6: postgresql-script
|
|||||||
Source7: postgresql-install-alternatives
|
Source7: postgresql-install-alternatives
|
||||||
Source8: postgresql-extensions-macros
|
Source8: postgresql-extensions-macros
|
||||||
Source9: postgresql.sysusers
|
Source9: postgresql.sysusers
|
||||||
|
Source10: postgresql-README.SUSE
|
||||||
|
Source11: postgresql-README
|
||||||
|
|
||||||
%if 0%{?suse_version} > 1100
|
%if 0%{?suse_version} > 1100
|
||||||
%define fwdir /etc/sysconfig/SuSEfirewall2.d/services
|
%define fwdir /etc/sysconfig/SuSEfirewall2.d/services
|
||||||
@ -126,7 +128,7 @@ Provides: postgresql-init = %version.0-%release
|
|||||||
Obsoletes: postgresql-init < %version.0-%release
|
Obsoletes: postgresql-init < %version.0-%release
|
||||||
%if %{with systemd}
|
%if %{with systemd}
|
||||||
BuildRequires: pkgconfig(systemd)
|
BuildRequires: pkgconfig(systemd)
|
||||||
%{?systemd_requires}
|
%{?systemd_ordering}
|
||||||
%else
|
%else
|
||||||
Requires(postun): %insserv_prereq
|
Requires(postun): %insserv_prereq
|
||||||
%endif
|
%endif
|
||||||
@ -322,10 +324,13 @@ and triggers.
|
|||||||
%prep
|
%prep
|
||||||
|
|
||||||
%build
|
%build
|
||||||
|
|
||||||
%if %{with sysusers}
|
%if %{with sysusers}
|
||||||
%sysusers_generate_pre %{SOURCE9} %{name}-server %{name}-server.conf
|
%sysusers_generate_pre %{SOURCE9} %{name}-server %{name}-server.conf
|
||||||
%endif
|
%endif
|
||||||
echo "This is a dummy package to provide a dependency on the default PostgreSQL version." > README
|
|
||||||
|
cp %{SOURCE10} README.SUSE
|
||||||
|
cp %{SOURCE11} README
|
||||||
|
|
||||||
%install
|
%install
|
||||||
mkdir -p %buildroot/var/lib/pgsql/
|
mkdir -p %buildroot/var/lib/pgsql/
|
||||||
@ -382,6 +387,7 @@ getent passwd postgres > /dev/null ||
|
|||||||
-c "PostgreSQL Server" -u 26 postgres
|
-c "PostgreSQL Server" -u 26 postgres
|
||||||
%endif
|
%endif
|
||||||
%if %{with systemd}
|
%if %{with systemd}
|
||||||
|
if test -x /usr/bin/systemctl; then
|
||||||
%service_add_pre postgresql.service
|
%service_add_pre postgresql.service
|
||||||
|
|
||||||
# Save the "enabled" and "active" state across the transition of
|
# Save the "enabled" and "active" state across the transition of
|
||||||
@ -393,11 +399,13 @@ if [ $1 -ge 1 ]; then \
|
|||||||
fi
|
fi
|
||||||
systemctl is-active postgresql.service &>/dev/null && touch %aflag ||:
|
systemctl is-active postgresql.service &>/dev/null && touch %aflag ||:
|
||||||
fi
|
fi
|
||||||
|
fi
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
%post server
|
%post server
|
||||||
%fillup_only -n postgresql
|
%fillup_only -n postgresql
|
||||||
%if %{with systemd}
|
%if %{with systemd}
|
||||||
|
if test -x /usr/bin/systemctl; then
|
||||||
PROFILE="/var/lib/pgsql/.bash_profile"
|
PROFILE="/var/lib/pgsql/.bash_profile"
|
||||||
if test -r "$PROFILE" && test "`cat $PROFILE`" = "/usr/share/postgresql/bash_profile"
|
if test -r "$PROFILE" && test "`cat $PROFILE`" = "/usr/share/postgresql/bash_profile"
|
||||||
then
|
then
|
||||||
@ -408,21 +416,26 @@ then
|
|||||||
fi
|
fi
|
||||||
%tmpfiles_create %_tmpfilesdir/postgresql.conf
|
%tmpfiles_create %_tmpfilesdir/postgresql.conf
|
||||||
%service_add_post postgresql.service
|
%service_add_post postgresql.service
|
||||||
|
fi
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
%preun server
|
%preun server
|
||||||
%if %{with systemd}
|
%if %{with systemd}
|
||||||
|
if test -x /usr/bin/systemctl; then
|
||||||
# Cannot use systemd macros here, because they're doing too much
|
# Cannot use systemd macros here, because they're doing too much
|
||||||
/usr/bin/systemctl --no-reload disable postgresql.service || :
|
/usr/bin/systemctl --no-reload disable postgresql.service || :
|
||||||
|
fi
|
||||||
%else
|
%else
|
||||||
%stop_on_removal postgresql
|
%stop_on_removal postgresql
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
%postun server
|
%postun server
|
||||||
%if %{with systemd}
|
%if %{with systemd}
|
||||||
|
if test -x /usr/bin/systemctl; then
|
||||||
# Cannot use systemd macros here, because they're doing too much
|
# Cannot use systemd macros here, because they're doing too much
|
||||||
rm -f "/var/lib/systemd/migrated/postgresql"
|
rm -f "/var/lib/systemd/migrated/postgresql"
|
||||||
/usr/bin/systemctl daemon-reload || :
|
/usr/bin/systemctl daemon-reload || :
|
||||||
|
fi
|
||||||
|
|
||||||
%else
|
%else
|
||||||
%insserv_cleanup
|
%insserv_cleanup
|
||||||
@ -430,6 +443,7 @@ rm -f "/var/lib/systemd/migrated/postgresql"
|
|||||||
|
|
||||||
%if %{with systemd}
|
%if %{with systemd}
|
||||||
%posttrans server
|
%posttrans server
|
||||||
|
if test -x /usr/bin/systemctl; then
|
||||||
# Save the "enabled" and "active" state across the transition of
|
# Save the "enabled" and "active" state across the transition of
|
||||||
# ownership of postgresql.service from postgresql-init to
|
# ownership of postgresql.service from postgresql-init to
|
||||||
# postgresql-server.
|
# postgresql-server.
|
||||||
@ -437,15 +451,17 @@ if test -f %eflag; then
|
|||||||
rm -f %eflag
|
rm -f %eflag
|
||||||
systemctl enable postgresql.service
|
systemctl enable postgresql.service
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if test -f %aflag; then
|
if test -f %aflag; then
|
||||||
rm -f %aflag
|
rm -f %aflag
|
||||||
systemctl start postgresql.service
|
systemctl start postgresql.service
|
||||||
fi
|
fi
|
||||||
|
fi
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
%files
|
%files
|
||||||
%defattr(-,root,root,-)
|
%defattr(-,root,root,-)
|
||||||
%doc README
|
%doc README.SUSE
|
||||||
%dir /usr/share/postgresql
|
%dir /usr/share/postgresql
|
||||||
/usr/share/postgresql/install-alternatives
|
/usr/share/postgresql/install-alternatives
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user