install.sgml
上传用户:blenddy
上传日期:2007-01-07
资源大小:6495k
文件大小:40k
源码类别:

数据库系统

开发平台:

Unix_Linux

  1.  <Chapter Id="install">
  2.   <Title>Installation</Title>
  3.   <Abstract>
  4.    <Para>
  5.     Complete installation instructions for 
  6.     <ProductName>Postgres</ProductName> v6.5.1.
  7.    </Para>
  8.   </Abstract>
  9.   <Para>
  10.    Before installing <ProductName>Postgres</ProductName>, you may wish to visit
  11.    <ULink url="http://www.postgresql.org">www.postgresql.org</ULink>
  12.    for up to date information, patches, etc.
  13.   </Para>
  14.   <Para>
  15.    These installation instructions assume:
  16.    <ItemizedList Mark="bullet" Spacing="compact">
  17.     <ListItem>
  18.      <Para>
  19.       Commands are Unix-compatible. See note below.
  20.      </Para>
  21.     </ListItem>
  22.     <ListItem>
  23.      <Para>
  24.       Defaults are used except where noted.
  25.      </Para>
  26.     </ListItem>
  27.     <ListItem>
  28.      <Para>
  29.       User <literal>postgres</literal> is the 
  30.       <ProductName>Postgres</ProductName> superuser.
  31.      </Para>
  32.     </ListItem>
  33.     <ListItem>
  34.      <Para>
  35.       The source path is <filename>/usr/src/pgsql</filename> (other paths are possible).
  36.      </Para>
  37.     </ListItem>
  38.     <ListItem>
  39.      <Para>
  40.       The runtime path is <filename>/usr/local/pgsql</filename> (other paths are possible).
  41.      </Para>
  42.     </ListItem>
  43.    </ItemizedList>
  44.   </para>
  45.   <Para>
  46.    Commands were tested on RedHat Linux version 5.2 using the tcsh shell.
  47.    Except where noted, they will probably work on most systems. Commands
  48.    like <command>ps</command> and <command>tar</command> may vary wildly 
  49.    between platforms on what options you should use.
  50.    <Emphasis>Use common sense</Emphasis> before typing in these commands.
  51.   </Para>
  52.   <Para>
  53.    Our Makefiles require GNU <Application>make</Application> (called
  54.    <Quote>gmake</Quote> in this document).  They will <Emphasis>not</Emphasis>
  55.    work with non-GNU <Application>make</Application> programs.  If you
  56.    have GNU <Application>make</Application> installed under the name 
  57.    <Quote>make</Quote> instead of <Quote>gmake</Quote>, then you will use the
  58.    command <command>make</command> instead. That's OK, but
  59.    you need to have the GNU form of <Application>make</Application> to succeed with
  60.    an installation.
  61.   </Para>
  62.   <Sect1>
  63.    <Title>Requirements to Run <ProductName>Postgres</ProductName></Title>
  64.    <Para>
  65.     Up to date information on supported platforms is at
  66.     <ulink url="http://www.postgresql.org/docs/admin/install.htm">
  67.      http://www.postgresql.org/docs/admin/install.htm</ulink>.
  68.     In general, most Unix-compatible
  69.     platforms with modern libraries should be able to run
  70.     <ProductName>Postgres</ProductName>.
  71.    </para>
  72.    <para>
  73.     Although the minimum required memory for running <ProductName>Postgres</ProductName>
  74.     is as little as 8MB, there are noticable improvements in runtimes for the regression
  75.     tests when expanding memory up to 96MB on a relatively fast dual-processor system
  76.     running X-Windows.
  77.     The rule is you can never have too much memory.
  78.    </para>
  79.    <Para>
  80.     Check that you have sufficient disk space.  You will need about
  81.     30 Mbytes for <filename>/usr/src/pgsql</filename>, 
  82.     about 5 Mbytes for <filename>/usr/local/pgsql</filename>
  83.     (excluding your database) and 1 Mbyte for an empty database.
  84.     The database will temporarily grow to about 20 Mbytes during the
  85.     regression tests.  You will also need about 3 Mbytes for the
  86.     distribution tar file.
  87.    </Para>
  88.    <Para>
  89.     We therefore recommend that during installation and testing you
  90.     have well over 20 Mbytes free under <filename>/usr/local</filename> and another 25 Mbytes
  91.     free on the disk partition containing your database.  Once you
  92.     delete the source files, tar file and regression database, you
  93.     will need 2 Mbytes for <filename>/usr/local/pgsql</filename>, 1 Mbyte for the empty
  94.     database, plus about five times the space you would require to
  95.     store your database data in a flat file.
  96.    </Para>
  97.    <Para>
  98.     To check for disk space, use 
  99.     <programlisting>
  100. $ df -k
  101.     </programlisting>
  102.    </para>
  103.   </Sect1>
  104. <Sect1>
  105. <Title>Installation Procedure</Title>
  106. <Procedure>
  107. <Title><ProductName>Postgres</ProductName> Installation</Title>
  108. <Para>
  109. For a fresh install or upgrading from previous releases of
  110. <ProductName>Postgres</ProductName>:
  111. </Para>
  112. <Step Performance="required">
  113. <Para>
  114. Read any last minute information and platform specific porting
  115.      notes.  There are some platform specific notes at the end of this
  116.      file for Ultrix4.x, Linux, BSD/OS and NeXT.  There are other
  117.      files in directory <FileName>/usr/src/pgsql/doc</FileName>, including files FAQ-Irix
  118.      and FAQ-Linux.  Also look in directory
  119. <ULink url="ftp://ftp.postgresql.org/pub">ftp://ftp.postgresql.org/pub</ULink>.
  120.      If there is a file called INSTALL in this directory then this
  121.      file will contain the latest installation information.
  122. </Para>
  123. <Para>
  124.      Please note that a "tested" platform in the list given earlier
  125.      simply means that someone went to the effort at some point of making
  126.      sure that a <ProductName>Postgres</ProductName> distribution would compile and run on this
  127.      platform without modifying the code.  Since the current developers
  128.      will not have access to all of these platforms, some of them may not
  129.      compile cleanly and pass the regression tests in the current
  130.      release due to minor problems.  Any such known problems and their
  131.      solutions will be posted in 
  132. <ULink url="ftp://ftp.postgresql.org/pub/INSTALL">ftp://ftp.postgresql.org/pub/INSTALL</ULink>.
  133. </Para>
  134. </Step>
  135. <Step Performance="optional">
  136. <Para>
  137. Create the <ProductName>Postgres</ProductName> superuser account
  138. (<literal>postgres</literal> is commonly used) if it does not already exist.
  139. </para>
  140. <para>
  141. The owner of the Postgres files can be any unprivileged user account.
  142. It <emphasis>must not</emphasis> be <literal>root</literal>, <literal>bin</literal>,
  143. or any other account with special access rights, as that would create a security risk.
  144. </para>
  145. </Step>
  146. <Step Performance="required">
  147. <Para>
  148. Log in to the <ProductName>Postgres</ProductName> superuser account. Most of the
  149. remaining steps in the installation will happen in this account.
  150. </para>
  151. </step>
  152. <Step Performance="required">
  153. <Para>
  154. Ftp file 
  155. <ulink url="ftp://ftp.postgresql.org/pub/postgresql-v6.5.1.tar.gz">
  156.  <filename>ftp://ftp.postgresql.org/pub/postgresql-v6.5.1.tar.gz</filename></ulink>
  157.  from the Internet.  Store it in your home directory.
  158. </Para>
  159. </Step>
  160. <Step Performance="required">
  161. <Para>
  162. Some platforms use <application>flex</application>.  
  163. If your system uses <application>flex</application> then make sure
  164.      you have a good version.  To check, type 
  165. <programlisting>
  166. $ flex --version
  167. </programlisting>
  168. </Para>
  169. <Para>
  170.      If the <application>flex</application> command is not found then you probably do not need it.
  171.      If the version is 2.5.2 or 2.5.4 or greater then you are okay.  If it
  172.      is 2.5.3 or before 2.5.2 then you will have to upgrade <application>flex</application>.  You may
  173.      get it at 
  174. <ulink url="ftp://prep.ai.mit.edu/pub/gnu/flex-2.5.4.tar.gz">ftp://prep.ai.mit.edu/pub/gnu/flex-2.5.4.tar.gz</ulink>.
  175. </Para>
  176. <Para>
  177.      If you need <application>flex</application> and don't have it or have the wrong version, then
  178.      you will be told so when you attempt to compile the program.  Feel
  179.      free to skip this step if you aren't sure you need it.  If you do
  180.      need it then you will be told to install/upgrade <application>flex</application> when you try to
  181.      compile <productname>Postgres</productname>.
  182. </Para>
  183. <Para>
  184. You may want to do the entire <application>flex</application> installation from
  185. the root account, though that is not absolutely necessary.
  186. Assuming that you want the installation to place files in the usual default
  187. areas, type the following:
  188. <ProgramListing>
  189. $ su -
  190. $ cd /usr/local/src
  191. ftp prep.ai.mit.edu
  192. ftp> cd /pub/gnu/
  193. ftp> binary
  194. ftp> get flex-2.5.4.tar.gz
  195. ftp> quit
  196. $ gunzip -c flex-2.5.4.tar.gz | tar xvf -
  197. $ cd flex-2.5.4
  198. $ configure --prefix=/usr
  199. $ gmake
  200. $ gmake check
  201. # You must be root when typing the next line:
  202. $ gmake install
  203. $ cd /usr/local/src
  204. $ rm -rf flex-2.5.4
  205. </ProgramListing>
  206. </Para>
  207. <Para>
  208.      This will update files <filename>/usr/man/man1/flex.1</filename>,
  209.  <filename>/usr/bin/flex</filename>,
  210.      <filename>/usr/lib/libfl.a</filename>,
  211.  <filename>/usr/include/FlexLexer.h</filename> and will add a link
  212.      <filename>/usr/bin/flex++</filename> which points to flex.
  213. </Para>
  214. </Step>
  215. <Step Performance="required">
  216. <Para>
  217. If you are not upgrading an existing system then skip to 
  218. <xref linkend="newdirs">.
  219. If you are upgrading from 6.5, you do not need to dump/reload or initdb.
  220. Simply compile the source code, stop the postmaster, do a "make install", and
  221. restart the postmaster.
  222. If you are upgrading from 6.4.* or earlier,  back up your database.
  223.      For alpha- and beta-level releases, the database format is liable
  224.      to change, often every few weeks, with no notice besides a quick comment
  225.      in the HACKERS mailing list.  Full releases always require a dump/reload
  226.      from previous releases.  It is therefore a bad idea to skip this
  227.      step.  
  228. </para>
  229. <tip>
  230. <para>
  231. Do not use the <application>pg_dumpall</application> 
  232. script from v6.0 or everything
  233.      will be owned by the <ProductName>Postgres</ProductName> super user.
  234. </para>
  235. </tip>
  236. <para>
  237. To dump your fairly recent post-v6.0 database installation, type
  238. <programlisting>
  239. $ pg_dumpall > db.out
  240. </programlisting>
  241. </para>
  242. <para>
  243. To use the latest <application>pg_dumpall</application> script on your
  244. existing older database before upgrading <productname>Postgres</productname>,
  245. pull the most recent version of <application>pg_dumpall</application>
  246. from the new distribution:
  247. <ProgramListing>
  248. $ cd
  249. $ gunzip -c postgresql-v6.5.1.tar.gz 
  250.     | tar xvf - src/bin/pg_dump/pg_dumpall
  251. $ chmod a+x src/bin/pg_dump/pg_dumpall
  252. $ src/bin/pg_dump/pg_dumpall > db.out
  253. $ rm -rf src
  254. </ProgramListing>
  255. </Para>
  256. <Para>
  257.      If you wish to preserve object id's (oids), then use the -o
  258.      option when running <application>pg_dumpall</application>.  
  259. However, unless you have a
  260.      special reason for doing this (such as using OIDs as keys
  261. in tables), don't do it.
  262. </Para>
  263. <Para>
  264.      If the <application>pg_dumpall</application> command
  265.  seems to take a long time and you think
  266.      it might have died, then, from another terminal, type
  267. <programlisting>
  268. $ ls -l db.out
  269. </programlisting>
  270.      several times to see if the size of the file is growing.
  271. </Para>
  272. <Para>
  273.      Please note that if you are upgrading from a version prior to
  274.      <ProductName>Postgres95</ProductName> v1.09 then you must back up your database,
  275.  install
  276.      <ProductName>Postgres95</ProductName> v1.09, restore your database,
  277.  then back it up again.
  278.      You should also read the release notes which should cover any
  279.  release-specific issues.
  280. </Para>
  281. <caution>
  282. <Para>
  283.      You must make sure that your database is not updated in the middle of
  284.      your backup.  If necessary, bring down postmaster, edit the permissions
  285.      in file <filename>/usr/local/pgsql/data/pg_hba.conf</filename>
  286.  to allow only you on, then
  287.      bring <application>postmaster</application> back up.
  288. </Para>
  289. </caution>
  290. </Step>
  291. <Step Performance="required">
  292. <Para>
  293. If you are upgrading an existing system then kill the postmaster.  Type
  294. <ProgramListing>
  295. $ ps -ax | grep postmaster
  296. </ProgramListing>
  297.      This should list the process numbers for a number of processes.  Type
  298.      the following line, with <replaceable>pid</replaceable>
  299.  replaced by the process id for process
  300.      <literal>postmaster</literal>.  
  301. (Do not use the id for process "grep postmaster".)  Type
  302. <programlisting>
  303. $ kill <replaceable>pid</replaceable>
  304. </programlisting>
  305. to actually stop the process.
  306. <tip>
  307. <para>
  308. On systems which have <productname>Postgres</productname> started at boot time, there
  309. is probably a startup file which will accomplish the same thing. For example, on my
  310. Linux system I can type
  311. <programlisting>
  312. $ /etc/rc.d/init.d/postgres.init stop
  313. </programlisting>
  314. to halt <productname>Postgres</productname>.
  315. </para>
  316. </tip>
  317. </Para>
  318. </Step>
  319. <Step Performance="required">
  320. <Para>
  321. If you are upgrading an existing system then move the old directories
  322.      out of the way.  If you are short of disk space then you may have to
  323.      back up and delete the directories instead.  If you do this, save the
  324.      old database in the <filename>/usr/local/pgsql/data</filename> directory tree.  At a
  325.      minimum, save file <filename>/usr/local/pgsql/data/pg_hba.conf</filename>.
  326. </Para>
  327. <Para>
  328.      Type the following:
  329. <programlisting>
  330. $ su -
  331. $ cd /usr/src
  332. $ mv pgsql pgsql_6_0
  333. $ cd /usr/local
  334. $ mv pgsql pgsql_6_0
  335. $ exit
  336. </programlisting>
  337. </Para>
  338. <Para>
  339.      If you are not using <filename>/usr/local/pgsql/data</filename>
  340.  as your data directory
  341.      (check to see if environment variable PGDATA is set to something
  342.      else) then you will also want to move this directory in the same
  343.      manner.
  344. </Para>
  345. </Step>
  346. <Step Performance="required" id="newdirs">
  347. <Para>
  348.   Make new source and install directories.  The actual paths can be
  349.      different for your installation but you must be consistent throughout this procedure.
  350. </para>
  351. <note>
  352. <para>
  353. There are two places in this installation procedure where you will have an opportunity
  354. to specify installation locations for programs, libraries, documentation, and other files.
  355. Usually it is sufficient to specify these at the <command>gmake install</command> stage
  356. of installation.
  357. </para>
  358. </note>
  359. <para>
  360.      Type
  361. <ProgramListing>
  362. $ su
  363. $ cd /usr/src
  364. $ mkdir pgsql
  365. $ chown postgres:postgres pgsql
  366. $ cd /usr/local
  367. $ mkdir pgsql
  368. $ chown postgres:postgres pgsql
  369. $ exit
  370. </ProgramListing>
  371. </Para>
  372. </Step>
  373. <Step Performance="required">
  374. <Para>
  375.  Unzip and untar the new source file.  Type
  376. <ProgramListing>
  377. $ cd /usr/src/pgsql
  378. $ gunzip -c ~/postgresql-v6.5.1.tar.gz | tar xvf -
  379. </ProgramListing>
  380. </Para>
  381. </Step>
  382. <Step Performance="required">
  383. <Para>
  384.  Configure the source code for your system.  It is this step at which
  385.      you can specify your actual installation path for
  386.      the build process (see the --prefix option below).  Type
  387. <ProgramListing>
  388. $ cd /usr/src/pgsql/src
  389. $ ./configure [ <replaceable>options</replaceable> ]
  390. </ProgramListing>
  391. </Para>
  392. <substeps>
  393. <Step Performance="optional">
  394. <Para>
  395.      Among other chores, the configure script selects a system-specific
  396.      "template" file from the files provided in the template subdirectory.
  397.      If it cannot guess which one to use for your system, it will say so and
  398.      exit.  In that case you'll need to figure out which one to use and run
  399.      configure again, this time giving the 
  400. <option>--with-template=TEMPLATE</option> option to
  401.      make the right file be chosen.
  402. <note>
  403. <title>Please Report Problems</title>
  404. <para>
  405. If your system is not automatically recognized by configure and you have to do this, please
  406.      send email to 
  407. <ulink url="mailto:scrappy@hub.org">scrappy@hub.org</ulink> with the output of the program
  408.      <application>./config.guess</application>. Indicate what the template file should be.
  409. </para>
  410. </note>
  411. </Para>
  412. </step>
  413. <Step Performance="optional">
  414. <Para>
  415. Choose configuration options. Check <xref linkend="config" endterm="install-config">
  416. for details. However, for a plain-vanilla first installation with no extra
  417. options like multi-byte character support or locale collation support it may
  418. be adequate to have chosen the installation areas and to run configure without
  419. extra options specified.
  420.      The configure script accepts many additional options that you can use
  421.      if you don't like the default configuration.  To see them all, type
  422. <ProgramListing>
  423.      ./configure --help
  424. </ProgramListing>
  425.      Some of the more commonly used ones are:
  426. <ProgramListing>
  427.        --prefix=BASEDIR   Selects a different base directory for the
  428.                           installation of the <ProductName>Postgres</ProductName> configuration.
  429.                           The default is /usr/local/pgsql.
  430.        --with-template=TEMPLATE
  431.                           Use template file TEMPLATE - the template
  432.                           files are assumed to be in the directory
  433.                           src/template, so look there for proper values.
  434.        --with-tcl         Build interface libraries and programs requiring
  435.                           Tcl/Tk, including libpgtcl, pgtclsh, and pgtksh.
  436.        --with-perl        Build the Perl interface library.
  437.        --with-odbc        Build the ODBC driver package.
  438.        --enable-hba       Enables Host Based Authentication (DEFAULT)
  439.        --disable-hba      Disables Host Based Authentication
  440.        --enable-locale    Enables USE_LOCALE
  441.        --enable-cassert   Enables ASSERT_CHECKING
  442.        --with-CC=compiler
  443.                           Use a specific C compiler that the configure
  444.                           script cannot find.
  445.        --with-CXX=compiler
  446.        --without-CXX
  447.                           Use a specific C++ compiler that the configure
  448.                           script cannot find, or exclude C++ compilation
  449.                           altogether.   (This only affects libpq++ at
  450.   present.)
  451. </ProgramListing>
  452. </Para>
  453. </step>
  454. <Step Performance="required">
  455. <Para>
  456. Here is the configure script used on a Sparc Solaris 2.5 system
  457.  with <filename>/opt/postgres</filename> specified as
  458.  the installation base directory:
  459. <ProgramListing>
  460. $ ./configure --prefix=/opt/postgres 
  461.     --with-template=sparc_solaris-gcc --with-pgport=5432 
  462.     --enable-hba --disable-locale
  463. </ProgramListing>
  464. <tip>
  465. <para>
  466.      Of course, you may type these three lines all
  467.      on the same line.
  468. </para>
  469. </tip>
  470. </Para>
  471. </Step>
  472. </substeps>
  473. </step>
  474. <Step Performance="required">
  475. <Para>
  476. Install the <application>man</application> and
  477. <acronym>HTML</acronym> documentation. Type
  478. <ProgramListing>
  479. $ cd /usr/src/pgsql/doc
  480. $ gmake install
  481. </ProgramListing>
  482. </para>
  483. <para>
  484. The documentation is also available in Postscript format. Look for files
  485. ending with <filename>.ps.gz</filename> in the same directory.
  486. </para>
  487. </step>
  488. <Step Performance="required">
  489. <Para>
  490. Compile the program.  Type
  491. <ProgramListing>
  492. $ cd /usr/src/pgsql/src
  493. $ gmake all >& make.log &
  494. $ tail -f make.log
  495. </ProgramListing>
  496. </Para>
  497. <Para>
  498.      The last line displayed will hopefully be 
  499. <programlisting>
  500. All of PostgreSQL is successfully made. Ready to install.
  501. </programlisting>
  502. Remember, <Quote>gmake</Quote> may be called <Quote>make</Quote> on
  503. your system.
  504.   At this point, or earlier
  505.      if you wish, type control-C to get out of tail.  (If you have
  506.      problems later on you may wish to examine file make.log for
  507.      warning and error messages.)
  508. <note>
  509. <para>
  510. You will probably find a number of warning
  511.      messages in make.log.  Unless you have problems later on, these
  512.      messages may be safely ignored.
  513. </para>
  514. </note>
  515. </para>
  516. <Para>
  517.      If the compiler fails with a message stating that 
  518. the <application>flex</application> command
  519.      cannot be found then install <application>flex</application> as described earlier.
  520.   Next,
  521.      change directory back to this directory, type 
  522. <programlisting>
  523. $ gmake clean
  524. </programlisting>
  525. then recompile again.
  526. </Para>
  527. <Para>
  528.      Compiler options, such as optimization and debugging, may 
  529.      be specified on the command line using the COPT variable.
  530.      For example, typing
  531. <ProgramListing>
  532. $ gmake COPT="-g" all >& make.log &
  533. </ProgramListing>
  534.      would invoke your compiler's <option>-g</option> option in all steps of the
  535.      build.  See <filename>src/Makefile.global.in</filename> for further details.
  536. </Para>
  537. </Step>
  538. <Step Performance="required">
  539. <Para>
  540.  Install the program.  Type
  541. <ProgramListing>
  542. $ cd /usr/src/pgsql/src
  543. $ gmake install >& make.install.log &
  544. $ tail -f make.install.log
  545. </ProgramListing>
  546. </Para>
  547. <Para>
  548.      The last line displayed will be 
  549. <programlisting>
  550. gmake[1]: Leaving directory `/usr/src/pgsql/src/man'
  551. </programlisting>
  552. At this point, or earlier if you wish,
  553.      type control-C to get out of tail.
  554. Remember, <Quote>gmake</Quote> may be called <Quote>make</Quote> on
  555. your system.
  556. </Para>
  557. </Step>
  558. <Step Performance="required">
  559. <Para>
  560. If necessary, tell your system how to find the new shared libraries.  You can
  561. do <emphasis>one</emphasis> of the following, preferably the first:
  562. </para>
  563. <SubSteps>
  564. <Step Performance="optional">
  565. <Para>
  566.        As root, edit file <filename>/etc/ld.so.conf</filename>.  Add a line
  567. <programlisting>
  568. <FileName>/usr/local/pgsql/lib</FileName>
  569. </programlisting>
  570. to the file.  Then run command <Command>/sbin/ldconfig</Command>.
  571. </Para>
  572. </Step>
  573. <Step Performance="optional">
  574. <Para>
  575.        In a bash shell, type
  576. <ProgramListing>
  577.     export LD_LIBRARY_PATH=/usr/local/pgsql/lib
  578. </ProgramListing>
  579. </Para>
  580. </Step>
  581. <Step Performance="optional">
  582. <Para>
  583.        In a csh shell, type
  584. <ProgramListing>
  585.     setenv LD_LIBRARY_PATH /usr/local/pgsql/lib
  586. </ProgramListing>
  587. </para>
  588. </Step>
  589. </SubSteps>
  590. <Para>
  591.      Please note that the above commands may vary wildly for different
  592.      operating systems.  Check the platform specific notes, such as
  593.      those for Ultrix4.x or and for non-ELF Linux.
  594. </Para>
  595. <Para>
  596.      If, when you create the database, you get the message 
  597. <programlisting>
  598. pg_id: can't load library 'libpq.so'
  599. </programlisting>
  600.  then the above step was necessary.  Simply
  601.      do this step, then try to create the database again.
  602. </Para>
  603. </Step>
  604.    <Step Performance="optional">
  605.     <Para>
  606.      If you used the <option>--with-perl</option> option to configure, check
  607.      the install log to see whether the Perl module was actually installed.
  608.      If you've followed our advice to make the Postgres files be owned by
  609.      an unprivileged userid, then the Perl module won't have been installed,
  610.      for lack of write privileges on the Perl library directories.  You can
  611.      complete its installation, either now or later, by becoming the user that
  612.      does own the Perl library (often root) (via <command>su</command>) and doing
  613.      <ProgramListing>
  614.       $ cd /usr/src/pgsql/src/interfaces/perl5
  615.       $ gmake install
  616.      </ProgramListing>
  617.     </Para>
  618.    </Step>
  619.    
  620.    <Step Performance="required">
  621.     <Para>
  622.      If it has not already been done, then prepare account <literal>postgres</literal>
  623.      for using <ProductName>Postgres</ProductName>.
  624.      Any account that will use <ProductName>Postgres</ProductName> must
  625.      be similarly prepared. 
  626.     </para>
  627.     <para>
  628.      There are several ways to influence the runtime environment of the
  629.      <ProductName>Postgres</ProductName>
  630.      server. Refer to the <citetitle>Administrator's Guide</citetitle>
  631.      for more information.
  632.      <note>
  633.       <para>
  634.        The following instructions are for a
  635.        bash/sh shell.  Adapt accordingly for other shells.
  636.       </para>
  637.      </note>
  638.     </Para>
  639.     
  640.     <substeps>
  641.      
  642.      <Step Performance="required">
  643.       <Para>
  644.        Add the following lines to your login environment:
  645.        
  646.        shell, <filename>~/.bash_profile</filename>:
  647.        <ProgramListing>
  648. PATH=$PATH:/usr/local/pgsql/bin
  649. MANPATH=$MANPATH:/usr/local/pgsql/man
  650. PGLIB=/usr/local/pgsql/lib
  651. PGDATA=/usr/local/pgsql/data
  652. export PATH MANPATH PGLIB PGDATA
  653.        </ProgramListing>
  654.       </Para>
  655.      </step>
  656.      <Step Performance="required">
  657.       <para>
  658.        Several regression tests could fail if the user's locale collation
  659.        scheme is different from that of the standard <literal>C</literal> locale.
  660.       </para>
  661.       <para>
  662.        If you configure and compile <ProductName>Postgres</ProductName>
  663.        with <option>--enable-locale</option> then you should
  664.        set the locale environment to <quote><literal>C</literal></quote>
  665. (or unset all <quote>LC_*</quote> variables)
  666.        by putting these additional lines to your login environment
  667.        before starting <application>postmaster</application>:
  668.        <ProgramListing>
  669. LC_COLLATE=C
  670. LC_CTYPE=C
  671. export LC_COLLATE LC_CTYPE
  672.        </ProgramListing>
  673.        
  674.        <ProgramListing>
  675.        </ProgramListing>
  676.       </para>
  677.      </step>
  678.      <Step Performance="required">
  679.       <Para>
  680.        Make sure that you have defined these variables before continuing
  681.        with the remaining steps.  The easiest way to do this is to type:
  682.        <ProgramListing>
  683. $ source ~/.bash_profile
  684.        </ProgramListing>
  685.       </Para>
  686.      </Step>
  687.      
  688.     </substeps>
  689.    </step>
  690. <Step Performance="required">
  691. <Para>
  692.  Create the database installation from your <ProductName>Postgres</ProductName> 
  693. superuser account (typically account <literal>postgres</literal>).
  694. <Emphasis>Do not do the following as root!</Emphasis>
  695. This would be a major security hole.  Type
  696. <ProgramListing>
  697. $ initdb
  698. </ProgramListing>
  699. </Para>
  700. </Step>
  701. <Step Performance="required">
  702. <Para>
  703.  Set up permissions to access the database system.  Do this by editing
  704.      file <filename>/usr/local/pgsql/data/pg_hba.conf</filename>.  The instructions are
  705.      included in the file.  (If your database is not located in the
  706.      default location, i.e. if <envar>PGDATA</envar> is set to point elsewhere, then the
  707.      location of this file will change accordingly.)  This file should be
  708.      made read only again once you are finished.
  709.      If you are upgrading from v6.0 or later you can copy file <filename>pg_hba.conf</filename> from
  710.      your old database on top of the one in your new database, rather than
  711.      redoing the file from scratch.
  712. </Para>
  713. </Step>
  714. <Step Performance="required">
  715. <para>
  716. Briefly test that the backend will start and run by running it from
  717. the command line.
  718. </para>
  719. <substeps>
  720. <Step Performance="required">
  721. <para>
  722.      Start the postmaster daemon running in the background by typing
  723. <ProgramListing>
  724. $ cd
  725. $ nohup postmaster -i > pgserver.log 2>&1 &
  726. </ProgramListing>
  727. </Para>
  728. </Step>
  729. <Step Performance="required">
  730. <para>
  731. Create a database by typing
  732. <ProgramListing>
  733. $ createdb
  734. </ProgramListing>
  735. </para>
  736. </step>
  737. <Step Performance="required">
  738. <para>
  739. Connect to the new database:
  740. <ProgramListing>
  741. $ psql
  742. </ProgramListing>
  743. </para>
  744. </step>
  745. <Step Performance="required">
  746. <para>
  747. And run a sample query:
  748. <ProgramListing>
  749. postgres=> SELECT datetime 'now';
  750. </ProgramListing>
  751. </para>
  752. </step>
  753. <Step Performance="required">
  754. <para>
  755. Exit <application>psql</application>:
  756. <ProgramListing>
  757. postgres=> q
  758. </ProgramListing>
  759. </para>
  760. </step>
  761. <Step Performance="required">
  762. <para>
  763. Remove the test database (unless you will want to use it later for other tests):
  764. <ProgramListing>
  765. $ destroydb
  766. </ProgramListing>
  767. </para>
  768. </step>
  769. </substeps>
  770. </step>
  771. <Step Performance="required">
  772. <Para>
  773.      Run postmaster in the background from your <ProductName>Postgres</ProductName> 
  774. superuser account (typically account <literal>postgres</literal>).
  775. <emphasis>Do not run <application>postmaster</application> 
  776. from the root account!</emphasis>
  777. </para>
  778. <Para>
  779. Usually, you will want to modify
  780.      your computer so that it will automatically start postmaster whenever
  781.     it boots. It is not required; the <ProductName>Postgres</ProductName> 
  782. server can
  783. be run successfully from non-privileged accounts without root intervention.
  784. </para>
  785. <para>
  786.      Here are some suggestions on how to do this, contributed by various
  787.      users.
  788. </para>
  789. <para>
  790.      Whatever you do, postmaster must be run by 
  791. the <ProductName>Postgres</ProductName> superuser (<literal>postgres</literal>?)
  792. <emphasis>and not by root</emphasis>.
  793. This is why all of the examples below start by switching user
  794.      (su) to postgres.  These commands also take into account the fact
  795.      that environment variables like PATH and PGDATA may not be set properly.
  796.      The examples are as follows.  Use them with extreme caution.
  797. <itemizedlist mark="bullet">
  798. <listitem>
  799. <para>
  800. If you are installing from a non-privileged account and have no root access, then
  801. start the <application>postmaster</application> and send it to the background:
  802. <ProgramListing>
  803. $ cd
  804. $ nohup postmaster > regress.log 2>&1 &
  805. </ProgramListing>
  806. </para>
  807. </listitem>
  808. <listitem>
  809. <para>
  810. Edit file rc.local on NetBSD or file rc2.d on SPARC Solaris
  811.           2.5.1 to contain the following single line:
  812. <programlisting>
  813. su postgres -c "/usr/local/pgsql/bin/postmaster -S -D /usr/local/pgsql/data"
  814. </programlisting>
  815. </para>
  816. </listitem>
  817. <listitem>
  818. <para>
  819. In FreeBSD 2.2-RELEASE edit /usr/local/etc/rc.d/pgsql.sh to
  820.           contain the following lines and make it chmod 755 and chown
  821.           root:bin.
  822. <programlisting>
  823. #!/bin/sh
  824. [ -x /usr/local/pgsql/bin/postmaster ] && {
  825.     su -l pgsql -c 'exec /usr/local/pgsql/bin/postmaster
  826.         -D/usr/local/pgsql/data
  827.         -S -o -F > /usr/local/pgsql/errlog' &
  828.     echo -n ' pgsql'
  829. }
  830. </programlisting>
  831.           You may put the line breaks as shown above.  The shell is smart
  832.           enough to keep parsing beyond end-of-line if there is an
  833.           expression unfinished.  The exec saves one layer of shell under
  834.           the postmaster process so the parent is init.
  835. </para>
  836. </listitem>
  837. <listitem>
  838. <para>
  839. In RedHat Linux add a file <filename>/etc/rc.d/init.d/postgres.init</filename>
  840. which is based on the example in <filename>contrib/linux/</filename>.
  841. Then make a softlink to this file from
  842.  <filename>/etc/rc.d/rc5.d/S98postgres.init</filename>.
  843. </para>
  844. </listitem>
  845. <listitem>
  846. <para>
  847. In RedHat Linux edit file /etc/inittab to add the
  848.           following as a single line:
  849. <programlisting>
  850. pg:2345:respawn:/bin/su - postgres -c
  851.     "/usr/local/pgsql/bin/postmaster -D/usr/local/pgsql/data
  852.     &gt;&gt; /usr/local/pgsql/server.log 2&gt;&1 &lt;/dev/null"
  853. </programlisting>
  854.           (The author of this example says this example will revive the
  855.           postmaster if it dies, but he doesn't know if there are other side
  856.           effects.)
  857. </para>
  858. </listitem>
  859. </itemizedlist>
  860. </Para>
  861. </Step>
  862. <Step Performance="required">
  863. <Para>
  864.      Run the regression tests.
  865.      The file <filename>/usr/src/pgsql/src/test/regress/README</filename> has detailed
  866.      instructions for running and interpreting the regression tests.
  867.      A short version follows here:
  868. </Para>
  869. <substeps>
  870. <Step Performance="required">
  871. <Para>
  872.     Type
  873. <ProgramListing>
  874. $ cd /usr/src/pgsql/src/test/regress
  875. $ gmake clean
  876. $ gmake all runtest
  877. </ProgramListing>
  878. </Para>
  879. <Para>
  880.      You do not need to type <command>gmake clean</command>
  881.  if this is the first time you
  882.      are running the tests.
  883. </Para>
  884. <Para>
  885.      You should get on the screen (and also written to file <filename>./regress.out</filename>)
  886.      a series of statements stating which tests passed and which tests
  887.      failed.  Please note that it can be normal for some tests to
  888.      "fail" on some platforms.  
  889. The script says a test has failed if there is any difference
  890.      at all between the actual output of the test and the expected output.
  891.      Thus, tests may "fail" due to minor differences in wording of error
  892.      messages, small differences in floating-point roundoff, etc, between
  893.      your system and the regression test reference platform.
  894.      "Failures" of this type do not indicate a problem with
  895.      <ProductName>Postgres</ProductName>.
  896.      The file <filename>./regression.diffs</filename> contains the textual differences between
  897.      the actual test output on your machine and the "expected" output
  898.      (which is simply what the reference system produced).  You should
  899.      carefully examine each difference listed to see whether it appears to
  900.      be a significant issue.
  901. </Para>
  902. <para>
  903. For example,
  904. <itemizedlist>
  905. <listitem>
  906. <Para>
  907.      For a i686/Linux-ELF platform, no tests failed since this is the
  908.      v6.5.1 regression testing reference platform.
  909. </Para>
  910. </listitem>
  911. </itemizedlist>
  912. </para>
  913. <Para>
  914.      Even if a test result clearly indicates a real failure, it may be a
  915.      localized problem that will not affect you.  An example is that the
  916.      <type>int8</type> test will fail, producing obviously incorrect output, if your
  917.      machine and C compiler do not provide a 64-bit integer data type
  918.      (or if they do but configure didn't discover it).  This is not
  919.      something to worry about unless you need to store 64-bit integers.
  920. </Para>
  921. <Para>
  922.      Conclusion?  If you do see failures, try to understand the nature of
  923.      the differences and then decide if those differences will affect your
  924.      intended use of <ProductName>Postgres</ProductName>.  The regression
  925.      tests are a helpful tool, but they may require some study to be useful.
  926. </Para>
  927. <Para>
  928.      After running the regression tests, type
  929. <ProgramListing>
  930. $ destroydb regression
  931. $ cd /usr/src/pgsql/src/test/regress
  932. $ gmake clean
  933. </ProgramListing>
  934.     to recover the disk space used for the tests.  (You may want to save
  935.     the <filename>regression.diffs</filename> file in another place before doing this.)
  936. </Para>
  937. </Step>
  938. </substeps>
  939. </step>
  940. <Step Performance="required">
  941. <Para>
  942.  If you haven't already done so, this would be a good time to modify
  943.       your computer to do regular maintainence.  The following should be
  944.       done at regular intervals:
  945. </para>
  946. <procedure>
  947. <title>Minimal Backup Procedure</title>
  948. <step performance="required">
  949. <para>
  950. Run the <acronym>SQL</acronym> command <command>VACUUM</command>.  
  951. This will clean up your database.
  952. </para>
  953. </step>
  954. <step performance="required">
  955. <para>
  956. Back up your system.  (You should probably keep the last few
  957.            backups on hand.)  Preferably, no one else should be using the
  958.            system at the time.
  959. </para>
  960. </step>
  961. </procedure>
  962. <para>
  963.       Ideally, the above tasks should be done by a shell script that is
  964.       run nightly or weekly by cron.  
  965. Look at the man page for <application>crontab</application>
  966.       for a starting point on how to do this.  (If you do it, please
  967.       e-mail us a copy of your shell script.  We would like to set up
  968.       our own systems to do this too.)
  969. </Para>
  970. </Step>
  971. <Step Performance="required">
  972. <Para>
  973.  If you are upgrading an existing system then reinstall your old database.
  974.      Type
  975. <ProgramListing>
  976. $ cd
  977. $ psql -e template1 < db.out
  978. </ProgramListing>
  979.      If your pre-v6.2 database uses either path or polygon geometric data types,
  980.      then you will need to upgrade any columns containing those types. To
  981.      do so, type (from within psql)
  982. <ProgramListing>
  983. UPDATE <replaceable>FirstTable</replaceable> SET <replaceable>PathCol</replaceable> = UpgradePath(<replaceable>PathCol</replaceable>);
  984. UPDATE <replaceable>SecondTable</replaceable> SET <replaceable>PathCol</replaceable> = UpgradePath(<replaceable>PathCol</replaceable>);
  985. ...
  986. VACUUM;
  987. </ProgramListing>
  988.      UpgradePath() checks to see that a path value is consistant with the
  989.      old syntax, and will not update a column which fails that examination.
  990.      UpgradePoly() cannot verify that a polygon is in fact from an old
  991.      syntax, but RevertPoly() is provided to reverse the effects of a
  992.      mis-applied upgrade.
  993. </Para>
  994. </Step>
  995. <Step Performance="required">
  996. <Para>
  997.  If you are a new user, you may wish to play with <ProductName>Postgres</ProductName> as described
  998.      below.
  999. </Para>
  1000. </Step>
  1001. <Step Performance="required">
  1002. <Para>
  1003.  Clean up after yourself.  Type
  1004. <ProgramListing>
  1005. $ rm -rf /usr/src/pgsql_6_5
  1006. $ rm -rf /usr/local/pgsql_6_5
  1007. # Also delete old database directory tree if it is not in
  1008. #  /usr/local/pgsql_6_5/data
  1009. $ rm ~/postgresql-v6.5.1.tar.gz
  1010. </ProgramListing>
  1011. </Para>
  1012. </Step>
  1013. <Step Performance="required">
  1014. <Para>
  1015.  You will probably want to print out the documentation. If you have
  1016. a Postscript printer, or have your machine already set up to accept
  1017. Postscript files using a print filter, then to print the User's Guide
  1018. simply type
  1019. <programlisting>
  1020. $ cd /usr/local/pgsql/doc
  1021. $ gunzip user.ps.tz | lpr
  1022. </programlisting>
  1023. </para>
  1024. <para>
  1025.   Here is how
  1026.      you might do it if you have Ghostscript on your system and are
  1027.      writing to a laserjet printer.
  1028. <programlisting>
  1029. $ alias gshp='gs -sDEVICE=laserjet -r300 -dNOPAUSE'
  1030. $ export GS_LIB=/usr/share/ghostscript:/usr/share/ghostscript/fonts
  1031. $ gunzip user.ps.gz
  1032. $ gshp -sOUTPUTFILE=user.hp user.ps
  1033. $ gzip user.ps
  1034. $ lpr -l -s -r manpage.hp
  1035. </programlisting>
  1036. </para>
  1037. </Step>
  1038. <Step Performance="required">
  1039. <Para>
  1040.  The <ProductName>Postgres</ProductName> team wants
  1041.  to keep <ProductName>Postgres</ProductName> working on all of the
  1042.      supported platforms.  We therefore ask you to let us know if you did
  1043.      or did not get <ProductName>Postgres</ProductName> to work on you system.
  1044.   Please send a
  1045.      mail message to 
  1046. <ulink url="mailto:pgsql-ports@postgresql.org">pgsql-ports@postgresql.org</ulink>
  1047.  telling us the following:
  1048. <itemizedlist>
  1049. <listitem>
  1050. <para>
  1051. The version of <ProductName>Postgres</ProductName> (v6.5.1, 6.5, beta 990318, etc.).
  1052. </para>
  1053. </listitem>
  1054. <listitem>
  1055. <para>
  1056. Your operating system (i.e. RedHat v5.1 Linux v2.0.34).
  1057. </para>
  1058. </listitem>
  1059. <listitem>
  1060. <para>
  1061. Your hardware (SPARC, i486, etc.).
  1062. </para>
  1063. </listitem>
  1064. <listitem>
  1065. <para>
  1066. Did you compile, install and run the regression tests cleanly?
  1067.          If not, what source code did you change (i.e. patches you
  1068.          applied, changes you made, etc.), what tests failed, etc.
  1069.          It is normal to get many warning when you compile.  You do
  1070.          not need to report these.
  1071. </para>
  1072. </listitem>
  1073. </itemizedlist>
  1074. </Para>
  1075. </Step>
  1076. <Step Performance="required">
  1077. <Para>
  1078.  Now create, access and manipulate databases as desired.  Write client
  1079.      programs to access the database server.  In other words, <emphasis>enjoy</emphasis>!
  1080. </Para>
  1081. </Step>
  1082. </Procedure>
  1083. </sect1>
  1084. <Sect1>
  1085. <Title>Playing with <ProductName>Postgres</ProductName></Title>
  1086. <Para>
  1087. After <ProductName>Postgres</ProductName> is installed, a database system is created, a postmaster
  1088. daemon is running, and the regression tests have passed, you'll want to 
  1089. see <ProductName>Postgres</ProductName> do something.  That's easy.  Invoke the interactive interface
  1090. to <ProductName>Postgres</ProductName>, <Application>psql</Application>:
  1091. <ProgramListing>
  1092. % psql template1
  1093. </ProgramListing>
  1094. (psql has to open a particular database, but at this point the only one
  1095. that exists is the template1 database, which always exists.  We will connect
  1096. to it only long enough to create another one and switch to it.)
  1097. </Para>
  1098. <Para>
  1099. The response from psql is:
  1100. <ProgramListing>
  1101. Welcome to the POSTGRESQL interactive sql monitor:
  1102.   Please read the file COPYRIGHT for copyright terms of POSTGRESQL
  1103.    type ? for help on slash commands
  1104.    type q to quit
  1105.    type g or terminate with semicolon to execute query
  1106.  You are currently connected to the database: template1
  1107. template1=>
  1108. </ProgramListing>
  1109. </Para>
  1110. <Para>
  1111. Create the database foo:
  1112. <ProgramListing>
  1113. template1=> create database foo;
  1114. CREATEDB
  1115. </ProgramListing>
  1116. (Get in the habit of including those SQL semicolons.  Psql won't execute
  1117. anything until it sees the semicolon or a "g" and the semicolon is required
  1118. to delimit multiple statements.)
  1119. </Para>
  1120. <Para>
  1121. Now connect to the new database:
  1122. <ProgramListing>
  1123. template1=> c foo
  1124. connecting to new database: foo
  1125. </ProgramListing>
  1126. ("slash" commands aren't SQL, so no semicolon.  Use ? to see all the slash commands.)
  1127. </Para>
  1128. <Para>
  1129. And create a table:
  1130. <ProgramListing>
  1131. foo=> create table bar (i int4, c char(16));
  1132. CREATE
  1133. </ProgramListing>
  1134. </Para>
  1135. <Para>
  1136. Then inspect the new table:
  1137. <ProgramListing>
  1138. foo=> d bar
  1139. Table    = bar
  1140. +----------------------------------+----------------------------------+-------+
  1141. |              Field               |              Type                | Length|
  1142. +----------------------------------+----------------------------------+-------+
  1143. | i                                | int4                             |     4 |
  1144. | c                                | (bp)char                         |    16 |
  1145. +----------------------------------+----------------------------------+-------+
  1146. </ProgramListing>
  1147. </Para>
  1148. <Para>
  1149. And so on.  You get the idea.
  1150. </Para>
  1151. </Sect1>
  1152. <Sect1>
  1153. <Title>The Next Step</Title>
  1154. <Para>
  1155. Questions? Bugs? Feedback?
  1156. First, read the files in directory <filename>/usr/src/pgsql/doc/</filename>.  
  1157. The FAQ in this directory may be particularly useful.
  1158. </Para>
  1159. <Para>
  1160. If <ProductName>Postgres</ProductName> failed to compile on your computer 
  1161. then fill out the form in file <filename>/usr/src/pgsql/doc/bug.template</filename>
  1162.  and mail it to the location indicated at the top of the form.
  1163. </Para>
  1164. <Para>
  1165. Check on the web site at
  1166. <ULink url="http://www.postgresql.org">http://www.postgresql.org</ULink>
  1167. For more information on the various support mailing lists.
  1168. </Para>
  1169. </Sect1>
  1170.   <Sect1>
  1171.    <Title>Porting Notes</Title>
  1172.    <Para>
  1173.     Check for any platform-specific FAQs in the <filename>doc/</filename> directory of
  1174.     the source distribution.
  1175.    </Para>
  1176.   </sect1>
  1177. </Chapter>
  1178. <!-- Keep this comment at the end of the file
  1179. Local variables:
  1180. mode: sgml
  1181. sgml-omittag:nil
  1182. sgml-shorttag:t
  1183. sgml-minimize-attributes:nil
  1184. sgml-always-quote-attributes:t
  1185. sgml-indent-step:1
  1186. sgml-indent-data:t
  1187. sgml-parent-document:nil
  1188. sgml-default-dtd-file:"./reference.ced"
  1189. sgml-exposed-tags:nil
  1190. sgml-local-catalogs:"/usr/lib/sgml/CATALOG"
  1191. sgml-local-ecat-files:nil
  1192. End:
  1193. -->