RPM build on SuSE 9.0 Professional

From: John Griffiths <postgrebugs(at)grifent(dot)com>
To: pgsql-ports(at)postgresql(dot)org
Subject: RPM build on SuSE 9.0 Professional
Date: 2004-02-17 00:58:24
Message-ID: 40316730.7010302@grifent.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-ports

Platform: SuSE Linux 9.0 Professional

I got an error when trying to include python in the build. Would like a
solution for it.
Also got an error for trying to include Kerberos. I did not have the
actual kerberos RPMs installed. I do have the Heimdal installed.

Got a dependency problem when installing the RPMs that were build. It
failed on "initscripts" which the package postgresql-7.4.1-1PGDG wants
for ldconfig. I chose to do a --nodeps installation and postgesql seems
to work just fine. Would like a solution here, please.

Trying to install the build postgresql-devel RPM failed with:
file /usr/include/libpgtcl.h from install of
postgresql-devel-7.4.1-1PGDG conflicts with file from package PgTcl-1.4-162

I also included some configuration and script changes I made in order to
get PostgreSQL 7.4.1 RPMs to build and PostgreSQL 7.4.1 to run.

During build of PostgreSQL 7.4.1 on SuSE 9.0 Professional, I got:

checking for python... /usr/bin/python
checking Python installation directories... /usr/lib/python23.zip
checking how to link an embedded Python application... no
configure: error: Python Makefile not found
error: Bad exit status from /var/tmp/rpm-tmp.64666 (%build)

But rpm -q python reports
python-2.3-52
and rpm -q python-devel
python-devel-2.3-43
and this exists in /usr/lib/
rwxrwxrwx 1 root root 9 Feb 12 00:16 python -> python2.3
drwxr-xr-x 16 root root 17680 Feb 15 22:11 python2.3

I even created /usr/lib/python23.zip by doing a
zip -r python23.zip python2.3
but still got the same build error.

Changed build to:
rpmbuild --rebuild postgresql-7.4.1-1PGDG.src.rpm --define 'kerberos 0'
--define 'python 0'
and got:
File not found:
/var/tmp/postgresql-7.4.1-root/etc/rc.d/init.d/postgresql

This is due to SuSE 9.0 not having a /etc/rc.d/init.d directory. SuSE
uses /etc/init.d as the boot directory. SuSE does have an /etc/rc.d
directory, but I it is a symbolic link to /etc/init.d. I solved this
error by adding a symbolic link in /etc/rc.d for init.d->/etc/init.d

I have reported this to SuSE, but thought I should mention it here too.

Had to modify the postgres init script for use in SuSE.

SuSE does not have an /etc/rc.d/init.d/functions file. SuSE uses
/etc/rc.status to report status stuff. That means that the command
success, failure, echo_success, and echo_failure do not exist. I
commented out

$INITD/functions

and added the following from the SuSE supplied init script for 7.3.4.

# Shell functions sourced from /etc/rc.status:
# rc_check check and set local and overall rc status
# rc_status check and set local and overall rc status
# rc_status -v ditto but be verbose in local rc status
# rc_status -v -r ditto and clear the local rc status
# rc_failed set local and overall rc status to failed
# rc_reset clear local rc status (overall remains)
# rc_exit exit appropriate to overall rc status
/etc/rc.status

Since a variable, H, is used by the SuSE supplied init script in the
check for status (see following), I added:

H=/usr/bin/postmaster
test -x $H || exit 5

from the SuSE script. I know I could have just used /usr/bin/postmaster
in the status command, but I wanted to preserve the original structure
of the SuSE status command.

Replacing success, failure, echo_success, and echo_failure with
rc_status -v works just fine.

There is no status command so

status postmaster

does not work. Replaced that line with:

echo -n "Checking for PostgreSQL: "
## Check status with checkproc(8), if process is running
## checkproc will return with exit status 0.

# Status has a slightly different for the status command:
# 0 - service running
# 1 - service dead, but /var/run/ pid file exists
# 2 - service dead, but /var/lock/ lock file exists
# 3 - service not running

# NOTE: checkproc returns LSB compliant status values.
checkproc $H
rc_status -v
;;

/etc/sysconfig/network is not a file but a directory. I really did not
know what to do here so I just commented out the sourcing of the file
and it seems to work fine.

SuSE symbolic links /usr/sbin/rcpostgres to their supplied init script,
so I made that symbolic link as well.

Browse pgsql-ports by date

  From Date Subject
Next Message SO 2004-02-17 05:33:25 rpm for postgresql
Previous Message bknight 2004-02-16 00:28:59 BCC32.mak will not complile