On 3/25/26 3:48 AM, Matthias Apitz wrote:
>
> Hello,
>
> We use the following script as /etc/init.d/postgres on
> SuSE Linux Enterprise, SLES 15 SP7, to start PostgreSQL 16.5 server:
>
> $ tar tzf postgresql-16.5.tar.gz | grep start-scripts/linux
> postgresql-16.5/contrib/start-scripts/linux
>
> # cp postgresql-16.5/contrib/start-scripts/linux /etc/init.d/postgres
>
> # head -10 /etc/init.d/postgres
> #! /bin/sh
>
> # chkconfig: 2345 98 02
> # description: PostgreSQL RDBMS
>
> # This is an example of a start/stop script for SysV-style init, such
> # as is used on Linux systems. You should edit some of the variables
> # and maybe the 'echo' commands.
> #
> # Place this file at /etc/init.d/postgresql (or
> # ...
>
> Together with systemd services this gives the following error:
>
> # systemctl enable postgres.service
> Synchronizing state of postgres.service with SysV service script with /usr/lib/systemd/systemd-sysv-install.
> Executing: /usr/lib/systemd/systemd-sysv-install enable postgres
> error: malformated LSB header in postgres: missing LSB end marker, aborting.
>
> The service file contains:
>
> # cat /etc/systemd/system/postgres.service
> [Unit]
> Description=SunRise PostgreSQL server
> After=systemd-user-sessions.service
>
> [Service]
> ExecStart=/etc/init.d/postgres start
> ExecStop=/etc/init.d/postgres stop
> TimeoutStartSec=infinity
> RemainAfterExit=yes
>
>
> [Install]
> WantedBy=multi-user.target
>
> When I enhance the script with this section between BEGIN / END
>
> # cat /etc/init.d/postgres
> #! /bin/sh
> # chkconfig: 2345 98 02
> # description: PostgreSQL RDBMS
> ### BEGIN INIT INFO
> # Provides: postgresql
> # Required-Start: $network $named
> # Required-Stop:
> # Default-Start: 3 5
> # Default-Stop:
> # Description:
> ### END INIT INFO
> ...
>
> The error goes away:
>
> # systemctl enable postgres.service
> Synchronizing state of postgres.service with SysV service script with /usr/lib/systemd/systemd-sysv-install.
> Executing: /usr/lib/systemd/systemd-sysv-install enable postgres
> ln -sf ../postgres /etc/init.d/rc3.d/S50postgres
> ln -sf ../postgres /etc/init.d/rc5.d/S50postgres
>
> Any comments on this?
From the contrib script:
"# Proper init scripts on Linux systems normally require setting lock
# and pid files under /var/run as well as reacting to network
# settings, so you should treat this with care.
"
From the start script that the PGDG Debian/Ubuntu packages use:
### BEGIN INIT INFO
# Provides: postgresql
# Required-Start: $local_fs $remote_fs $network $time
# Required-Stop: $local_fs $remote_fs $network $time
# Should-Start: $syslog
# Should-Stop: $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: PostgreSQL RDBMS server
### END INIT INFO
[Continued]
>
> Thanks
>
> matthias
>
>
--
Adrian Klaver
adrian.klaver@aklaver.com