|
| 1 | +======================================================= |
| 2 | +Frequently Asked Questions (FAQ) for PostgreSQL V6.5 |
| 3 | +SCO UnixWare and OpenServer Specific |
| 4 | +TO BE READ IN CONJUNCTION WITH THE NORMAL FAQ |
| 5 | +======================================================= |
| 6 | +last updated: Tue May 25 12:00:00 PDT 1999 |
| 7 | + |
| 8 | +current maintainer: Andrew Merrill (andrew@compclass.com) |
| 9 | +original author: Andrew Merrill (andrew@compclass.com) |
| 10 | + |
| 11 | + |
| 12 | +PostgreSQL 6.5 can be built on SCO UnixWare 7 and SCO OpenServer 5. |
| 13 | +On OpenServer, you can use either the OpenServer Development Kit or |
| 14 | +the Universal Development Kit. |
| 15 | + |
| 16 | +However, some tweaking may be needed, as described below. |
| 17 | + |
| 18 | +Topics: |
| 19 | +*) Skunkware |
| 20 | +*) GNU Make |
| 21 | +*) C++ and libpq++ |
| 22 | +*) Readline |
| 23 | +*) Using the UDK on OpenServer |
| 24 | +*) Shared Memory and SHMMAX |
| 25 | +*) Java and JDBC |
| 26 | +*) Reading the PostgreSQL man pages on UnixWare |
| 27 | + |
| 28 | + |
| 29 | +*************************************************************************** |
| 30 | +*) Skunkware |
| 31 | + |
| 32 | +You should locate your copy of the SCO Skunkware CD. The Skunkware CD |
| 33 | +is included with UnixWare 7 and current versions of OpenServer 5. |
| 34 | + |
| 35 | +Skunkware includes ready-to-install versions of many popular programs that |
| 36 | +are available on the Internet. For example, gzip, gunzip, GNU make, flex, |
| 37 | +and bison are all included. |
| 38 | + |
| 39 | +If you do not have this CD, the software on it |
| 40 | +is available via anonymous ftp from ftp.sco.com/skunkware. |
| 41 | + |
| 42 | +For UnixWare 7.1, this CD is now labeled "Open License Software Supplement". |
| 43 | + |
| 44 | +Skunkware has different versions for UnixWare and |
| 45 | +OpenServer. Make sure you install the correct version for your |
| 46 | +operating system, except as noted below. |
| 47 | + |
| 48 | + |
| 49 | +*************************************************************************** |
| 50 | +*) GNU Make |
| 51 | + |
| 52 | +You need to use the GNU make program, which is on the Skunkware CD. |
| 53 | +By default, it installs as /usr/local/bin/make. To avoid confusion |
| 54 | +with the SCO make program, you may want to rename GNU make to gmake. |
| 55 | + |
| 56 | + |
| 57 | +*************************************************************************** |
| 58 | +*) C++ and libpq++ |
| 59 | + |
| 60 | +I have not been able to build libpq++, the PostgreSQL C++ interface, with |
| 61 | +the UnixWare or OpenServer C++ compilers. By default, building PostgreSQL |
| 62 | +also builds the libpq++ interface. When that fails, it causes the entire |
| 63 | +build of PostgreSQL to fail. |
| 64 | + |
| 65 | +This is the problem if you see the following error message: |
| 66 | + |
| 67 | +"pgenv.cc", line 47: error: no default constructor exists for class "string" |
| 68 | + |
| 69 | +If you have this problem, you can disable building of libpq++ with the |
| 70 | +following configure option: |
| 71 | + |
| 72 | +configure --without-CXX |
| 73 | + |
| 74 | + |
| 75 | +*************************************************************************** |
| 76 | +*) Readline |
| 77 | + |
| 78 | +If you install the readline library, then psql (the PostgreSQL command |
| 79 | +line SQL interpreter) remembers each command you type, and allows |
| 80 | +you to use arrow keys to recall and edit previous commands. This is |
| 81 | +very helpful, and is strongly recommended. The readline library is |
| 82 | +on the Skunkware CD. |
| 83 | + |
| 84 | +The readline library is not included on the UnixWare 7.1 Skunkware CD. If |
| 85 | +you have the UnixWare 7.0.0 or 7.0.1 Skunkware CDs, you can install it |
| 86 | +from there. Otherwise, try ftp.sco.com/skunkware. |
| 87 | + |
| 88 | +By default, readline installs into /usr/local/lib and /usr/local/include. |
| 89 | +However, the PostgreSQL configure program will not find it there without |
| 90 | +help. If you installed readline, then use the following options to configure: |
| 91 | + |
| 92 | +configure --with-libs=/usr/local/lib --with-includes=/usr/local/include |
| 93 | + |
| 94 | +Putting this together with the no-C++ option above yields: |
| 95 | + |
| 96 | +configure --with-libs=/usr/local/lib --with-includes=/usr/local/include --without-CXX |
| 97 | + |
| 98 | + |
| 99 | +*************************************************************************** |
| 100 | +*) Using the UDK on OpenServer |
| 101 | + |
| 102 | +If you are using the new Universal Development Kit (UDK) compiler on |
| 103 | +OpenServer, you need to use different arguments to the configure program. |
| 104 | + |
| 105 | +First, you need to specify the "unixware" template instead of the default. |
| 106 | + |
| 107 | +Second, you need to specify the locations of the UDK libraries. |
| 108 | + |
| 109 | +Putting these together: |
| 110 | + |
| 111 | +configure --with-template=unixware --with-libs=/udk/usr/lib --with-includes=/udk/usr/include |
| 112 | + |
| 113 | +Putting these together with the no-C++ and readline options from above: |
| 114 | + |
| 115 | +./configure --with-template=unixware --with-libs="/udk/usr/lib /usr/local/lib" --with-includes="/udk/usr/include /usr/local/include" --without-CXX |
| 116 | + |
| 117 | + |
| 118 | +*************************************************************************** |
| 119 | +*) Shared Memory and SHMMAX |
| 120 | + |
| 121 | +PostgreSQL supports multiple backend daemons running at once. A block |
| 122 | +of shared memory is used by the backend processes. A larger block |
| 123 | +of shared memory allows PostgreSQL to run faster and support more |
| 124 | +complicated queries. |
| 125 | + |
| 126 | +By default, UnixWare 7 and OpenServer are confiugured to support shared memory |
| 127 | +blocks that are no larger than 524288 bytes, or 512K. By default, PostgreSQL |
| 128 | +tries to allocate a shared memory block that is larger than this. If |
| 129 | +you don't do anything, this allocation will fail, and the postmaster |
| 130 | +daemon will not be able to run. |
| 131 | + |
| 132 | +The error message looks like this (the numbers may be different): |
| 133 | + |
| 134 | +IpcMemoryCreate: shmget failed (Invalid argument) key=5432001, size=831176, permission=600 |
| 135 | +FATAL 1: ShmemCreate: cannot create region |
| 136 | + |
| 137 | +You have two choices: tell PostgreSQL to allocate a smaller shared memory |
| 138 | +block, or tell Unix to allow larger shared memory blocks. The latter |
| 139 | +is the preferred solution, but it requires a kernel tunable change and a |
| 140 | +reboot to implement. |
| 141 | + |
| 142 | +To configure the size of the PostgreSQL shared memory block, use the -B |
| 143 | +option to the postmaster command, which configures the number of buffers |
| 144 | +used by PostgresSQL. (The shared memory block consists of these buffers |
| 145 | +and around 300K of other stuff.) Each buffer uses 8K, and by default |
| 146 | +there are 64 buffers, or 64*8*1024 = 524288 bytes (plus the ~300K of other |
| 147 | +stuff). |
| 148 | + |
| 149 | +To use PostgreSQL without doing any kernel tuning, use a -B value of |
| 150 | +about 24. This would take up 24*8*1024 = 196608 bytes, plus ~300K |
| 151 | +of other stuff, yields about 500000, which will fit in under the |
| 152 | +default 512K limit. |
| 153 | + |
| 154 | +Example: postmaster -B 24 |
| 155 | + |
| 156 | +The recommended option is to instead raise the kernel tunable SHMMAX, |
| 157 | +which controls the size of the largest allowed shared memory block. |
| 158 | + |
| 159 | +*** Tuning SHMMAX on UnixWare *** |
| 160 | + |
| 161 | +To display the current value of SHMMAX, run: |
| 162 | +/etc/conf/bin/idtune -g SHMMAX |
| 163 | +which displays the current, default, minimum, and maximum values, in bytes. |
| 164 | + |
| 165 | +To set a new value for SHMMAX, run: |
| 166 | +/etc/conf/bin/idtune SHMMAX value |
| 167 | +where value is the new value you want to use (in bytes). |
| 168 | + |
| 169 | +After setting SHMMAX, rebuild the kernel and reboot. |
| 170 | +To rebuild the kernel: |
| 171 | +/etc/conf/bin/idbuild -B |
| 172 | + |
| 173 | +*** Tuning SHMMAX on OpenServer *** |
| 174 | + |
| 175 | +First, cd to /etc/conf/cf.d. |
| 176 | + |
| 177 | +To display the current value of SHMMAX, in bytes, run: |
| 178 | +./configure -y SHMMAX |
| 179 | + |
| 180 | +To set a new value for SHMMAX, run: |
| 181 | +./configure SHMMAX=value |
| 182 | +where value is the new value you want to use (in bytes). |
| 183 | + |
| 184 | +After setting SHMMAX, rebuild the kernel and reboot. |
| 185 | +To rebuild the kernel: |
| 186 | +./link_unix |
| 187 | + |
| 188 | + |
| 189 | +*************************************************************************** |
| 190 | +*) Java and JDBC |
| 191 | + |
| 192 | +The JDBC interface will not build on UnixWare or OpenServer without changes. |
| 193 | +The JDBC Makefile in src/interfaces/jdbc/Makefile uses the $$( ) construction |
| 194 | +to run an external shell command, instead of the older ` ` syntax. |
| 195 | +However, the $$( ) syntax does not work on UnixWare or OpenServer. |
| 196 | +So, each of the two uses of it must be replaced with backquotes. You can |
| 197 | +search for $$( to locate the two lines that need changing. |
| 198 | + |
| 199 | +In the file src/interfaces/jdbc/Makefile : |
| 200 | + |
| 201 | +change: |
| 202 | + make $$($(JAVA) makeVersion) |
| 203 | +to: |
| 204 | + make `$(JAVA) makeVersion` |
| 205 | + |
| 206 | +and change: |
| 207 | + $(JAR) -c0f $@ $$($(FIND) postgresql -name "*.class" -print) |
| 208 | +to: |
| 209 | + $(JAR) -c0f $@ `$(FIND) postgresql -name "*.class" -print` |
| 210 | + |
| 211 | +Of course, you also need to have installed Java on your system, and |
| 212 | +make sure that /usr/java/bin is in your PATH. |
| 213 | + |
| 214 | +And, remember to use GNU make, as always. |
| 215 | + |
| 216 | + |
| 217 | +*************************************************************************** |
| 218 | +*) Reading the PostgreSQL man pages on UnixWare |
| 219 | + |
| 220 | +By default, the PostgreSQL man pages are installed into /usr/local/pgsql/man. |
| 221 | +By default, UnixWare does not look there for man pages, so you will not |
| 222 | +be able to read them. |
| 223 | + |
| 224 | +You need to make two changes to access the PostgreSQL man pages from UnixWare. |
| 225 | + |
| 226 | +1) You need to modify the MANPATH environment variable. I use: |
| 227 | + |
| 228 | +MANPATH=/usr/local/pgsql/man:/usr/dt/man:/usr/man:/usr/share/man:scohelp |
| 229 | +export MANPATH |
| 230 | + |
| 231 | +2) The man pages for SQL commands are, by default, placed in section l |
| 232 | +(normally used for "l"ocal pages). UnixWare does not support the l section. |
| 233 | + |
| 234 | +The solution I use is to move all these pages from section l to an unused |
| 235 | +section, such as section 6. To accomplish that: |
| 236 | + |
| 237 | +cd /usr/local/pgsql/man |
| 238 | +mv manl man6 |
| 239 | +cd man6 |
| 240 | +for file in *.l |
| 241 | +do |
| 242 | + mv $file `basename $file .l`.6 |
| 243 | +done |
| 244 | + |
| 245 | +I have not tried using the PostgreSQL man pages on OpenServer. Volunteers?? |
| 246 | + |
0 commit comments