Various bugs with PG7.1 8th March snapshot on Solaris 8 INTEL - Mailing list pgsql-bugs
From | Justin Clift |
---|---|
Subject | Various bugs with PG7.1 8th March snapshot on Solaris 8 INTEL |
Date | |
Msg-id | 3AAE04AF.CAACD13F@iprimus.com.au Whole thread Raw |
Responses |
Re: Various bugs with PG7.1 8th March snapshot on Solaris 8
INTEL
|
List | pgsql-bugs |
Hi all, Sorry for sending this directly as an email. The Bug Form on the PostgreSQL webpage keeps on timing out on me. (Server overload?) These are five errors/bugs and solutions from the 8th March 2001 PostgreSQL 7.1 snapshot. The system : Solaris 8 INTEL (10/00 release as available for download from Sun) Maintenance Update 3 installed, recommended patches installed. 128 MB RAM 2 x 400 Mhz CPU's GCC 2.95.2 GNU Make 3.79.1 GNU Flex 2.5.4 GNU Bison 1.28 OpenSSL 0.9.6 installed Didn't have readline installed General other GNU utils installed, nothing weird. This system is known to be stable and doesn't generally have compilation problems. Compilation command : ./configure --p=/opt/postgresql71 --enable-syslog --with-openssl=/opt/openssl *** 1 *** Firstly there is a complation error : When --with-openssl=<the path to my openssl dir> is given to configure on Solaris 8 INTEL, the compilation errors in : - src/backend/libpg/crypt.c (line 26) - src/backend/libpg/password.c (line 14) - src/interfaces/libpq/fe-auth.c (line 49) - src/interfaces/libpq/fe-connect.c (line 43) because of : #ifdef HAVE_CRYPT_H #include <crypt.h> #endif Seems to be causing a conflict with the built in /usr/include/crypt.h and the <openssl dir>/include/openssl/des.h The error given by the compilation process is (this one's for fe-connect.c): make[3]: Entering directory `/install/new2/postgresql-snapshot/src/interfaces/libpq' gcc -Wall -Wmissing-prototypes -Wmissing-declarations -fPIC -I. -I../../../src/include -I/opt/openssl/include -DFRONTEND -DSYSCONFDIR='"/opt/postgresql71/etc"' -c -o fe-connect.o fe-connect.c In file included from fe-connect.c:44: /usr/include/crypt.h:23: conflicting types for `des_encrypt' /opt/openssl/include/openssl/des.h:150: previous declaration of `des_encrypt' make[3]: *** [fe-connect.o] Error 1 make[3]: Leaving directory `/install/new2/postgresql-snapshot/src/interfaces/libpq' make[2]: *** [all] Error 2 make[2]: Leaving directory `/install/new2/postgresql-snapshot/src/interfaces' make[1]: *** [all] Error 2 make[1]: Leaving directory `/install/new2/postgresql-snapshot/src' make: *** [all] Error 2 I fixed this by just commenting out the #ifdef section and it's included <crypt.h> in each of these 4 files. Compiles fine after this. *** 2 *** Next problem is that running 'gmake check' expects to find the new 'postgres' file in the normal PATH, not in the temporary installation PATH. I deduce this from the ./src/test/regress/log/initdb.log file which complains about not being able to find the 'postgres' file in the installation location. Here's the relevant error from 'gmake check' : <snip> ============== creating temporary installation ============== ============== initializing database system ============== pg_regress: initdb failed Examine ./log/initdb.log for the reason. make[2]: *** [check] Error 2 rm regress.o make[2]: Leaving directory `/install/new2/postgresql-snapshot/src/test/regress' make[1]: *** [check] Error 2 make[1]: Leaving directory `/install/new2/postgresql-snapshot/src/test' make: *** [check] Error 2 bash-2.03$ echo $PATH /usr/local/bin:/usr/bin:/usr/openwin/bin:/usr/ccs/bin:/opt/postgresql71/bin:/usr/dt/bin:/usr/local/qt/bin:/usr/games:/opt/kde/bin bash-2.03$ more src/test/regress/log/initdb.log The program 'postgres' is needed by initdb but was not found in the directory '/opt/postgresql71/bin'. Check your installation. bash-2.03$ find . -name "postgres" -type f ./src/backend/postgres ./src/test/regress/tmp_check/install/opt/postgresql71/bin/postgres bash-2.03$ *** 3 *** A third problem and solution is this misleading error message : Even after doing a 'make install' to ensure the above make check will find the files it's after, I get this : bash-2.03$ make install <snipped installation stuff> bash-2.03$ make check <snipped general make check stuff> ============== removing existing temp installation ============== ============== creating temporary installation ============== ============== initializing database system ============== pg_regress: initdb failed Examine ./log/initdb.log for the reason. make[2]: *** [check] Error 2 make[2]: Leaving directory `/install/new2/postgresql-snapshot/src/test/regress' make[1]: *** [check] Error 2 make[1]: Leaving directory `/install/new2/postgresql-snapshot/src/test' make: *** [check] Error 2 bash-2.03$ more src/test/regress/log/initdb.log The program '/opt/postgresql71/bin/postgres' needed by initdb does not belong to PostgreSQL version 7.1beta5. Check your installation. bash-2.03$ This sounded like I had a bad PATH, or existing PostgreSQL files in LD_LIBRARY_PATH or something. After investigating a bit futher, the reason for the error message was really that I didn't have the path to the openssl library files in LD_LIBRARY_PATH : $ initdb The program '/opt/postgresql71/bin/postgres' needed by initdb does not belong to PostgreSQL version 7.1beta5. Check your installation. $ cd /opt/postgresql71/bin $ ./postgres -version ld.so.1: ./postgres: fatal: libssl.so.0: open failed: No such file or directory Killed $ echo $LD_LIBRARY_PATH /opt/postgresql71/lib $ LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/openssl/lib $ export LD_LIBRARY_PATH $ ./postgres -version FATAL 1: Can't create lock file /opt/postgresql71/data/postmaster.pid: No such file or directory $ initdb This database system will be initialized with username "postgres". This user will own all the data files and must also own the server process. Creating directory /opt/postgresql71/data Creating directory /opt/postgresql71/data/base Creating directory /opt/postgresql71/data/global Creating directory /opt/postgresql71/data/pg_xlog Creating template1 database in /opt/postgresql71/data/base/1 DEBUG: starting up DEBUG: database system was shut down at 2001-03-12 18:08:15 DEBUG: CheckPoint record at (0, 8) DEBUG: Redo record at (0, 8); Undo record at (0, 8); Shutdown TRUE DEBUG: NextTransactionId: 514; NextOid: 16384 DEBUG: database system is in production state Creating global relations in /opt/postgresql71/data/global DEBUG: starting up DEBUG: database system was shut down at 2001-03-12 18:08:18 DEBUG: CheckPoint record at (0, 112) DEBUG: Redo record at (0, 112); Undo record at (0, 0); Shutdown TRUE DEBUG: NextTransactionId: 514; NextOid: 17199 DEBUG: database system is in production state Initializing pg_shadow. Enabling unlimited row width for system tables. Creating system views. Loading pg_description. Setting lastsysoid. Vacuuming database. Copying template1 to template0. Success. You can now start the database server using: /opt/postgresql71/bin/postmaster -D /opt/postgresql71/data or /opt/postgresql71/bin/pg_ctl -D /opt/postgresql71/data start $ So.. suddenly it works. After finding this out, I set the LD_LIBRARY_PATH to include the openssl libraries and did another make check in the src/test/regress directory and this time it worked. So, I don't know how you would do it, but I believe the error message about the version of 'postgres' not belonging to 7.1beta5 to be really misleading, as what it should be complaining about is not being able to find the openssl libraries. *** 4 *** In the regression test side of things, Solaris 8 INTEL seems be having troubles with handling int8 types. Not sure if this is a known problem. The int8 tests failed with error messages like : INSERT INTO INT8_TBL VALUES('123','4567890123456789'); + ERROR: int8 value out of range: "4567890123456789" Naturally, the rest of the int8 tests didn't complete nicely as the data wasn't there to test with. The subselect and union tests also failed in the parts that were to do with int8, due to these large numbers it doesn't seem to be able to handle. *** 5 *** 'Make clean' doesn't work : $ make clean make -C doc clean make[1]: Entering directory `/install/new2/postgresql-snapshot/doc' make[1]: Nothing to be done for `clean'. make[1]: Leaving directory `/install/new2/postgresql-snapshot/doc' make -C contrib clean make[1]: Entering directory `/install/new2/postgresql-snapshot/contrib' for dir in array cube earthdistance findoidjoins fulltextindex intarray isbn_issn lo mSQL-interface mac miscutil noupdate oid2name pg_dumplo pg_logger pgbench pgcrypto rserv seg soundex spi string tips unixdate userlock vacuumlo ; do \ if [ -e $dir/Makefile ]; then \ make -C $dir clean; \ fi; \ done /bin/sh: test: argument expected make[1]: *** [clean] Error 1 make[1]: Leaving directory `/install/new2/postgresql-snapshot/contrib' make: *** [clean] Error 2 $ At this stage, I was tired and grumpy and Couldn't Be Bothered checking which Makefile had the error in it. :-/ Regards and best wishes, Justin Clift
pgsql-bugs by date: