<!-- $Id -->
<sect1 id="requirements">
<title>System Requirements</title> 
<para>
To run &slony1;  you will need

<itemizedlist>
<listitem><para>&postgres; 8.3 or above (this version of &slony1; is 
known to work with 8.3.x, 8.4.x and 9.0.x). Earlier versions of &postgres;
require &slony1; 1.2.x </para></listitem>
<listitem><para>The &slony1; binary files either compiled 
from source or from a binary package</para></listitem>

</itemizedlist>
</para>

<para>
The following are recommended for running &slony1; 

<itemizedlist>
<listitem><para>A method of keeping the clocks on your replicas
reasonably in sync such as NTP</para>

<para> Also, it is preferable to use an consistent, stable time zone
such as UTC or GMT.</para>

<para> Users have run into problems with &lslon; functioning properly
when their system uses a time zone that &postgres; was unable to
recognize such as CUT0 or WST.  It is necessary that you use a
timezone that &postgres; can recognize correctly.  It is furthermore
preferable to use a time zone where times do not have discontinuities
due to Daylight Savings Time. </para>

<para> Most of &slony1; does not directly reference or use times, but
if clocks are out of sync between servers running &slony1; components,
confusion may be expected in the following places:</para>
<itemizedlist>

<listitem><para>The monitoring view <envar>sl_status</envar> uses
timestamps sourced from multiple servers.</para></listitem>

<listitem><para>Monitoring table &slcomponents; captures timestamps
based on the clock time on the host running &lslon;.</para></listitem>

<listitem><para> &lslon; logs are likely to contain
timestamps.</para></listitem>

</itemizedlist>

<para> Figuring out what is going on is likely to be made rather
confusing if the database servers and servers where &lslon; instances
run do not agree on what time it its. </para>

</listitem>

<listitem><para>A reliable network between nodes</para>

<para> &lslon; processes should run in the same
<quote>network context</quote> as the node that each is responsible
for managing so that the connection to that node is a
<quote>local</quote> one.  Do <emphasis>not</emphasis> run such links
across a WAN.  Thus, if you have nodes in London and nodes in New
York, the &lslon;s managing London nodes should run in London, and the
&lslon;s managing New York nodes should run in New York.</para>

<para> A WAN outage (or flakiness of the WAN in general) can leave
database connections <quote>zombied</quote>, and typical TCP/IP
behaviour <link linkend="multipleslonconnections"> will allow those
connections to persist, preventing a slon restart for around two
hours. </link> </para>

<para> It is not difficult to remedy this; you need only <command>kill
SIGINT</command> the offending backend connection.  But by running the
&lslon; locally, you will generally not be vulnerable to this
condition. </para>
</listitem>

<listitem><para>All of your databases should be using the same 
database encoding. (ie LATIN1 or UTF8). Replicating from
a database in one encoding to a database with a different
encoding might lead to replication errors.</para></listitem>
</itemizedlist>
</para>

<sect2>
<title>Requirements for compiling &slony1;</title>

<para> In order to compile &slony1;, you need to have the following
tools:

<itemizedlist>
<listitem><para> GNU make.  Other make programs will not work.  GNU
make is often installed under the name <command>gmake</command>; this
document will therefore always refer to it by that name. (On
Linux-based systems GNU make is typically the default make, and is
called <command>make</command>) </para> </listitem>

<listitem><para> You need an ISO/ANSI C compiler.  Recent versions of
<application>GCC</application> work.</para></listitem>

<listitem><para> You also need a recent version of &postgres;
including the server headers. You must have &postgres; version 8.3 
or newer to be able to build and use &slony1;.  </para>

</listitem>

<listitem><para> This documentation is written in SGML using <ulink
url="http://docbook.com/"> DocBook </ulink>, and may be processed into
numerous formats including HTML, RTF, and PDF using tools in the
<ulink url="http://docbook.sourceforge.net/"> DocBook Open Repository
</ulink> along with <ulink url="http://openjade.sourceforge.net/">
OpenJade.</ulink> </para></listitem>

<listitem><para> On &windows; you will also need the same <ulink url=
"http://www.postgresql.org/docs/faqs.FAQ_MINGW.html">MinGW/Msys
Toolset</ulink> used to build &postgres; 8.3 and above.  In addition
you will need to install <ulink url=
"http://sourceware.org/pthreads-win32/">pthreads-win32
2.x</ulink>. </para></listitem>

</itemizedlist> </para>

<sect2>
<title> Getting &slony1; Source</title>

<indexterm><primary>downloading &slony1; sources</primary></indexterm>

<para>You can get the &slony1; source from <ulink
    url="http://main.slony.info/downloads/">
http://main.slony.info/downloads/</ulink>
</para>

</sect2>

</sect1>
<!-- Keep this comment at the end of the file
Local variables:
mode:sgml
sgml-omittag:nil
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
sgml-parent-document:"slony.sgml"
sgml-exposed-tags:nil
sgml-local-catalogs:("/usr/lib/sgml/catalog")
sgml-local-ecat-files:nil
End:
-->
