]> begriffs open source - ai-pg/blob - full-docs/html/install-requirements.html
Include latest toc output
[ai-pg] / full-docs / html / install-requirements.html
1 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>17.1. Requirements</title><link rel="stylesheet" type="text/css" href="stylesheet.css" /><link rev="made" href="pgsql-docs@lists.postgresql.org" /><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot" /><link rel="prev" href="installation.html" title="Chapter 17. Installation from Source Code" /><link rel="next" href="install-getsource.html" title="17.2. Getting the Source" /></head><body id="docContent" class="container-fluid col-10"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="5" align="center">17.1. Requirements</th></tr><tr><td width="10%" align="left"><a accesskey="p" href="installation.html" title="Chapter 17. Installation from Source Code">Prev</a> </td><td width="10%" align="left"><a accesskey="u" href="installation.html" title="Chapter 17. Installation from Source Code">Up</a></td><th width="60%" align="center">Chapter 17. Installation from Source Code</th><td width="10%" align="right"><a accesskey="h" href="index.html" title="PostgreSQL 18.0 Documentation">Home</a></td><td width="10%" align="right"> <a accesskey="n" href="install-getsource.html" title="17.2. Getting the Source">Next</a></td></tr></table><hr /></div><div class="sect1" id="INSTALL-REQUIREMENTS"><div class="titlepage"><div><div><h2 class="title" style="clear: both">17.1. Requirements <a href="#INSTALL-REQUIREMENTS" class="id_link">#</a></h2></div></div></div><p>
3    In general, a modern Unix-compatible platform should be able to run
4    <span class="productname">PostgreSQL</span>.
5    The platforms that had received specific testing at the
6    time of release are described in <a class="xref" href="supported-platforms.html" title="17.6. Supported Platforms">Section 17.6</a>
7    below.
8   </p><p>
9    The following software packages are required for building
10    <span class="productname">PostgreSQL</span>:
11
12    </p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>
13       <a id="id-1.6.4.4.3.2.1.1.1" class="indexterm"></a>
14
15       <acronym class="acronym">GNU</acronym> <span class="application">make</span> version 3.81 or newer is required; other
16       <span class="application">make</span> programs or older <acronym class="acronym">GNU</acronym> <span class="application">make</span> versions will <span class="emphasis"><em>not</em></span> work.
17       (<acronym class="acronym">GNU</acronym> <span class="application">make</span> is sometimes installed under
18       the name <code class="filename">gmake</code>.)  To test for <acronym class="acronym">GNU</acronym>
19       <span class="application">make</span> enter:
20 </p><pre class="screen">
21 <strong class="userinput"><code>make --version</code></strong>
22 </pre><p>
23      </p></li><li class="listitem"><p>
24       <a id="id-1.6.4.4.3.2.2.1.1" class="indexterm"></a>
25
26       Alternatively, <span class="productname">PostgreSQL</span> can be built using
27       <a class="ulink" href="https://mesonbuild.com/" target="_top">Meson</a>.  This is the only
28       option for building <span class="productname">PostgreSQL</span> on Windows
29       using <span class="productname">Visual Studio</span>.  For other platforms,
30       using <span class="application">Meson</span> is currently experimental.  If
31       you choose to use <span class="application">Meson</span>, then you don't need
32       <acronym class="acronym">GNU</acronym> <span class="application">make</span>, but the other
33       requirements below still apply.
34      </p><p>
35       The minimum required version of <span class="application">Meson</span> is 0.54.
36      </p></li><li class="listitem"><p>
37       You need an <acronym class="acronym">ISO</acronym>/<acronym class="acronym">ANSI</acronym> C compiler (at least
38       C99-compliant). Recent
39       versions of <span class="productname">GCC</span> are recommended, but
40       <span class="productname">PostgreSQL</span> is known to build using a wide variety
41       of compilers from different vendors.
42      </p></li><li class="listitem"><p>
43       <span class="application">tar</span> is required to unpack the source
44       distribution, in addition to either
45       <span class="application">gzip</span> or <span class="application">bzip2</span>.
46      </p></li><li class="listitem"><p>
47       <a id="id-1.6.4.4.3.2.5.1.1" class="indexterm"></a>
48       <a id="id-1.6.4.4.3.2.5.1.2" class="indexterm"></a>
49       <a id="id-1.6.4.4.3.2.5.1.3" class="indexterm"></a>
50       <a id="id-1.6.4.4.3.2.5.1.4" class="indexterm"></a>
51
52       <span class="application">Flex</span> and <span class="application">Bison</span> are
53       required.  Other <span class="application">lex</span> and
54       <span class="application">yacc</span> programs cannot be used.
55       <span class="application">Bison</span> needs to be at least version 2.3.
56      </p></li><li class="listitem"><p>
57       <a id="id-1.6.4.4.3.2.6.1.1" class="indexterm"></a>
58
59       <span class="application">Perl</span> 5.14 or later is needed during the build
60       process and to run some test suites.  (This requirement is separate from
61       the requirements for building <span class="application">PL/Perl</span>; see
62       below.)
63      </p></li><li class="listitem"><p>
64       <a id="id-1.6.4.4.3.2.7.1.1" class="indexterm"></a>
65       <a id="id-1.6.4.4.3.2.7.1.2" class="indexterm"></a>
66
67       The <acronym class="acronym">GNU</acronym> <span class="productname">Readline</span> library is used by
68       default.  It allows <span class="application">psql</span> (the
69       PostgreSQL command line SQL interpreter) to remember each
70       command you type, and allows you to use arrow keys to recall and
71       edit previous commands.  This is very helpful and is strongly
72       recommended.  If you don't want to use it then you must specify
73       the <code class="option">--without-readline</code> option to
74       <code class="filename">configure</code>. As an alternative, you can often use the
75       BSD-licensed <code class="filename">libedit</code> library, originally
76       developed on <span class="productname">NetBSD</span>. The
77       <code class="filename">libedit</code> library is
78       GNU <span class="productname">Readline</span>-compatible and is used if
79       <code class="filename">libreadline</code> is not found, or if
80       <code class="option">--with-libedit-preferred</code> is used as an
81       option to <code class="filename">configure</code>. If you are using a package-based
82       Linux distribution, be aware that you need both the
83       <code class="literal">readline</code> and <code class="literal">readline-devel</code> packages, if
84       those are separate in your distribution.
85      </p></li><li class="listitem"><p>
86       <a id="id-1.6.4.4.3.2.8.1.1" class="indexterm"></a>
87
88       The <span class="productname">zlib</span> compression library is
89       used by default. If you don't want to use it then you must
90       specify the <code class="option">--without-zlib</code> option to
91       <code class="filename">configure</code>. Using this option disables
92       support for compressed archives in <span class="application">pg_dump</span> and
93       <span class="application">pg_restore</span>.
94      </p></li><li class="listitem"><p>
95       The ICU library is used by default. If you don't want to use it then you must specify the <code class="option">--without-icu</code> option to <code class="filename">configure</code>. Using this option disables support for ICU collation features (see <a class="xref" href="collation.html" title="23.2. Collation Support">Section 23.2</a>).
96      </p><p>
97       ICU support requires the <span class="productname">ICU4C</span> package to be
98       installed.  The minimum required version of
99       <span class="productname">ICU4C</span> is currently 4.2.
100      </p><p>
101       By default,
102       <span class="productname">pkg-config</span><a id="id-1.6.4.4.3.2.9.3.2" class="indexterm"></a>
103       will be used to find the required compilation options.  This is
104       supported for <span class="productname">ICU4C</span> version 4.6 and later.
105       For older versions, or if <span class="productname">pkg-config</span> is not
106       available, the variables <code class="envar">ICU_CFLAGS</code> and
107       <code class="envar">ICU_LIBS</code> can be specified to
108       <code class="filename">configure</code>, like in this example:
109 </p><pre class="programlisting">
110 ./configure ... ICU_CFLAGS='-I/some/where/include' ICU_LIBS='-L/some/where/lib -licui18n -licuuc -licudata'
111 </pre><p>
112       (If <span class="productname">ICU4C</span> is in the default search path
113       for the compiler, then you still need to specify nonempty strings in
114       order to avoid use of <span class="productname">pkg-config</span>, for
115       example, <code class="literal">ICU_CFLAGS=' '</code>.)
116      </p></li></ul></div><p>
117   </p><p>
118    The following packages are optional.  They are not required in the
119    default configuration, but they are needed when certain build
120    options are enabled, as explained below:
121
122    </p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>
123       To build the server programming language
124       <span class="application">PL/Perl</span> you need a full
125       <span class="productname">Perl</span> installation, including the
126       <code class="filename">libperl</code> library and the header files.
127       The minimum required version is <span class="productname">Perl</span> 5.14.
128       Since <span class="application">PL/Perl</span> will be a shared
129       library, the <a id="id-1.6.4.4.4.1.1.1.6" class="indexterm"></a>
130       <code class="filename">libperl</code> library must be a shared library
131       also on most platforms.  This appears to be the default in
132       recent <span class="productname">Perl</span> versions, but it was not
133       in earlier versions, and in any case it is the choice of whomever
134       installed Perl at your site.  <code class="filename">configure</code> will fail
135       if building <span class="application">PL/Perl</span> is selected but it cannot
136       find a shared <code class="filename">libperl</code>.  In that case, you will have
137       to rebuild and install <span class="productname">Perl</span> manually to be
138       able to build <span class="application">PL/Perl</span>.  During the
139       configuration process for <span class="productname">Perl</span>, request a
140       shared library.
141      </p><p>
142       If you intend to make more than incidental use of
143       <span class="application">PL/Perl</span>, you should ensure that the
144       <span class="productname">Perl</span> installation was built with the
145       <code class="literal">usemultiplicity</code> option enabled (<code class="literal">perl -V</code>
146       will show whether this is the case).
147      </p></li><li class="listitem"><p>
148       To build the <span class="application">PL/Python</span> server programming
149       language, you need a <span class="productname">Python</span>
150       installation with the header files and
151       the <span class="application">sysconfig</span> module.  The minimum
152       supported version is <span class="productname">Python</span> 3.6.8.
153      </p><p>
154       Since <span class="application">PL/Python</span> will be a shared
155       library, the <a id="id-1.6.4.4.4.1.2.2.2" class="indexterm"></a>
156       <code class="filename">libpython</code> library must be a shared library
157       also on most platforms.  This is not the case in a default
158       <span class="productname">Python</span> installation built from source, but a
159       shared library is available in many operating system
160       distributions.  <code class="filename">configure</code> will fail if
161       building <span class="application">PL/Python</span> is selected but it cannot
162       find a shared <code class="filename">libpython</code>.  That might mean that you
163       either have to install additional packages or rebuild (part of) your
164       <span class="productname">Python</span> installation to provide this shared
165       library.  When building from source, run <span class="productname">Python</span>'s
166       configure with the <code class="literal">--enable-shared</code> flag.
167      </p></li><li class="listitem"><p>
168       To build the <span class="application">PL/Tcl</span>
169       procedural language, you of course need a <span class="productname">Tcl</span>
170       installation.  The minimum required version is
171       <span class="productname">Tcl</span> 8.4.
172      </p></li><li class="listitem"><p>
173       To enable Native Language Support (<acronym class="acronym">NLS</acronym>), that
174       is, the ability to display a program's messages in a language
175       other than English, you need an implementation of the
176       <span class="application">Gettext</span> <acronym class="acronym">API</acronym>.  Some operating
177       systems have this built-in (e.g., <span class="systemitem">Linux</span>, <span class="systemitem">NetBSD</span>,
178       <span class="systemitem">Solaris</span>), for other systems you
179       can download an add-on package from <a class="ulink" href="https://www.gnu.org/software/gettext/" target="_top">https://www.gnu.org/software/gettext/</a>.
180       If you are using the <span class="application">Gettext</span> implementation in
181       the <acronym class="acronym">GNU</acronym> C library, then you will additionally
182       need the <span class="productname">GNU Gettext</span> package for some
183       utility programs.  For any of the other implementations you will
184       not need it.
185      </p></li><li class="listitem"><p>
186       You need <span class="productname">OpenSSL</span>, if you want to support
187       encrypted client connections.  <span class="productname">OpenSSL</span> is
188       also required for random number generation on platforms that do not
189       have <code class="filename">/dev/urandom</code> (except Windows).  The minimum
190       required version is 1.1.1.
191      </p><p>
192       Additionally, <span class="productname">LibreSSL</span> is supported using the
193       <span class="productname">OpenSSL</span> compatibility layer.  The minimum
194       required version is 3.4 (from <span class="systemitem">OpenBSD</span>
195       version 7.0).
196      </p></li><li class="listitem"><p>
197       You need <span class="application">MIT Kerberos</span> (for GSSAPI),
198       <span class="productname">OpenLDAP</span>, and/or <span class="application">PAM</span>,
199       if you want to support authentication using those services.
200      </p></li><li class="listitem"><p>
201       You need <span class="productname">Curl</span> to build an optional module
202       which implements the <a class="link" href="libpq-oauth.html" title="32.20. OAuth Support">OAuth Device
203       Authorization flow</a> for client applications.
204      </p></li><li class="listitem"><p>
205       You need <span class="productname">LZ4</span>, if you want to support
206       compression of data with that method; see
207       <a class="xref" href="runtime-config-client.html#GUC-DEFAULT-TOAST-COMPRESSION">default_toast_compression</a> and
208       <a class="xref" href="runtime-config-wal.html#GUC-WAL-COMPRESSION">wal_compression</a>.
209      </p></li><li class="listitem"><p>
210       You need <span class="productname">Zstandard</span>, if you want to support
211       compression of data with that method; see
212       <a class="xref" href="runtime-config-wal.html#GUC-WAL-COMPRESSION">wal_compression</a>.
213       The minimum required version is 1.4.0.
214      </p></li><li class="listitem"><p>
215       To build the <span class="productname">PostgreSQL</span> documentation,
216       there is a separate set of requirements; see
217       <a class="xref" href="docguide-toolsets.html" title="J.2. Tool Sets">Section J.2</a>.
218      </p></li></ul></div><p>
219   </p><p>
220    If you need to get a <acronym class="acronym">GNU</acronym> package, you can find
221    it at your local <acronym class="acronym">GNU</acronym> mirror site (see <a class="ulink" href="https://www.gnu.org/prep/ftp" target="_top">https://www.gnu.org/prep/ftp</a>
222    for a list) or at <a class="ulink" href="ftp://ftp.gnu.org/gnu/" target="_top">ftp://ftp.gnu.org/gnu/</a>.
223   </p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="installation.html" title="Chapter 17. Installation from Source Code">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="installation.html" title="Chapter 17. Installation from Source Code">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="install-getsource.html" title="17.2. Getting the Source">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 17. Installation from Source Code </td><td width="20%" align="center"><a accesskey="h" href="index.html" title="PostgreSQL 18.0 Documentation">Home</a></td><td width="40%" align="right" valign="top"> 17.2. Getting the Source</td></tr></table></div></body></html>