FAQ_SCO
上传用户:blenddy
上传日期:2007-01-07
资源大小:6495k
文件大小:9k
源码类别:

数据库系统

开发平台:

Unix_Linux

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