1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!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 16.3 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>
In general, a modern Unix-compatible platform should be able to run
<span class="productname">PostgreSQL</span>.
The platforms that had received specific testing at the
time of release are described in <a class="xref" href="supported-platforms.html" title="17.6. Supported Platforms">Section 17.6</a>
below.
</p><p>
The following software packages are required for building
<span class="productname">PostgreSQL</span>:
</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>
<a id="id-1.6.4.5.3.2.1.1.1" class="indexterm"></a>
<acronym class="acronym">GNU</acronym> <span class="application">make</span> version 3.81 or newer is required; other
<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.
(<acronym class="acronym">GNU</acronym> <span class="application">make</span> is sometimes installed under
the name <code class="filename">gmake</code>.) To test for <acronym class="acronym">GNU</acronym>
<span class="application">make</span> enter:
</p><pre class="screen">
<strong class="userinput"><code>make --version</code></strong>
</pre><p>
</p></li><li class="listitem"><p>
<a id="id-1.6.4.5.3.2.2.1.1" class="indexterm"></a>
Alternatively, <span class="productname">PostgreSQL</span> can be built using
<a class="ulink" href="https://mesonbuild.com/" target="_top">Meson</a>. This is currently
experimental and only works when building from a Git checkout (not from
a distribution tarball). If you choose to use
<span class="application">Meson</span>, then you don't need
<acronym class="acronym">GNU</acronym> <span class="application">make</span>, but the other
requirements below still apply.
</p><p>
The minimum required version of <span class="application">Meson</span> is 0.54.
</p></li><li class="listitem"><p>
You need an <acronym class="acronym">ISO</acronym>/<acronym class="acronym">ANSI</acronym> C compiler (at least
C99-compliant). Recent
versions of <span class="productname">GCC</span> are recommended, but
<span class="productname">PostgreSQL</span> is known to build using a wide variety
of compilers from different vendors.
</p></li><li class="listitem"><p>
<span class="application">tar</span> is required to unpack the source
distribution, in addition to either
<span class="application">gzip</span> or <span class="application">bzip2</span>.
</p></li><li class="listitem"><p>
<a id="id-1.6.4.5.3.2.5.1.1" class="indexterm"></a>
<a id="id-1.6.4.5.3.2.5.1.2" class="indexterm"></a>
The <acronym class="acronym">GNU</acronym> <span class="productname">Readline</span> library is used by
default. It allows <span class="application">psql</span> (the
PostgreSQL command line SQL interpreter) to remember each
command you type, and allows you to use arrow keys to recall and
edit previous commands. This is very helpful and is strongly
recommended. If you don't want to use it then you must specify
the <code class="option">--without-readline</code> option to
<code class="filename">configure</code>. As an alternative, you can often use the
BSD-licensed <code class="filename">libedit</code> library, originally
developed on <span class="productname">NetBSD</span>. The
<code class="filename">libedit</code> library is
GNU <span class="productname">Readline</span>-compatible and is used if
<code class="filename">libreadline</code> is not found, or if
<code class="option">--with-libedit-preferred</code> is used as an
option to <code class="filename">configure</code>. If you are using a package-based
Linux distribution, be aware that you need both the
<code class="literal">readline</code> and <code class="literal">readline-devel</code> packages, if
those are separate in your distribution.
</p></li><li class="listitem"><p>
<a id="id-1.6.4.5.3.2.6.1.1" class="indexterm"></a>
The <span class="productname">zlib</span> compression library is
used by default. If you don't want to use it then you must
specify the <code class="option">--without-zlib</code> option to
<code class="filename">configure</code>. Using this option disables
support for compressed archives in <span class="application">pg_dump</span> and
<span class="application">pg_restore</span>.
</p></li><li class="listitem"><p>
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="24.2. Collation Support">Section 24.2</a>).
</p><p>
ICU support requires the <span class="productname">ICU4C</span> package to be
installed. The minimum required version of
<span class="productname">ICU4C</span> is currently 4.2.
</p><p>
By default,
<span class="productname">pkg-config</span><a id="id-1.6.4.5.3.2.7.3.2" class="indexterm"></a>
will be used to find the required compilation options. This is
supported for <span class="productname">ICU4C</span> version 4.6 and later.
For older versions, or if <span class="productname">pkg-config</span> is not
available, the variables <code class="envar">ICU_CFLAGS</code> and
<code class="envar">ICU_LIBS</code> can be specified to
<code class="filename">configure</code>, like in this example:
</p><pre class="programlisting">
./configure ... ICU_CFLAGS='-I/some/where/include' ICU_LIBS='-L/some/where/lib -licui18n -licuuc -licudata'
</pre><p>
(If <span class="productname">ICU4C</span> is in the default search path
for the compiler, then you still need to specify nonempty strings in
order to avoid use of <span class="productname">pkg-config</span>, for
example, <code class="literal">ICU_CFLAGS=' '</code>.)
</p></li></ul></div><p>
</p><p>
The following packages are optional. They are not required in the
default configuration, but they are needed when certain build
options are enabled, as explained below:
</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>
To build the server programming language
<span class="application">PL/Perl</span> you need a full
<span class="productname">Perl</span> installation, including the
<code class="filename">libperl</code> library and the header files.
The minimum required version is <span class="productname">Perl</span> 5.14.
Since <span class="application">PL/Perl</span> will be a shared
library, the <a id="id-1.6.4.5.4.1.1.1.6" class="indexterm"></a>
<code class="filename">libperl</code> library must be a shared library
also on most platforms. This appears to be the default in
recent <span class="productname">Perl</span> versions, but it was not
in earlier versions, and in any case it is the choice of whomever
installed Perl at your site. <code class="filename">configure</code> will fail
if building <span class="application">PL/Perl</span> is selected but it cannot
find a shared <code class="filename">libperl</code>. In that case, you will have
to rebuild and install <span class="productname">Perl</span> manually to be
able to build <span class="application">PL/Perl</span>. During the
configuration process for <span class="productname">Perl</span>, request a
shared library.
</p><p>
If you intend to make more than incidental use of
<span class="application">PL/Perl</span>, you should ensure that the
<span class="productname">Perl</span> installation was built with the
<code class="literal">usemultiplicity</code> option enabled (<code class="literal">perl -V</code>
will show whether this is the case).
</p></li><li class="listitem"><p>
To build the <span class="application">PL/Python</span> server programming
language, you need a <span class="productname">Python</span>
installation with the header files and
the <span class="application">sysconfig</span> module. The minimum
required version is <span class="productname">Python</span> 3.2.
</p><p>
Since <span class="application">PL/Python</span> will be a shared
library, the <a id="id-1.6.4.5.4.1.2.2.2" class="indexterm"></a>
<code class="filename">libpython</code> library must be a shared library
also on most platforms. This is not the case in a default
<span class="productname">Python</span> installation built from source, but a
shared library is available in many operating system
distributions. <code class="filename">configure</code> will fail if
building <span class="application">PL/Python</span> is selected but it cannot
find a shared <code class="filename">libpython</code>. That might mean that you
either have to install additional packages or rebuild (part of) your
<span class="productname">Python</span> installation to provide this shared
library. When building from source, run <span class="productname">Python</span>'s
configure with the <code class="literal">--enable-shared</code> flag.
</p></li><li class="listitem"><p>
To build the <span class="application">PL/Tcl</span>
procedural language, you of course need a <span class="productname">Tcl</span>
installation. The minimum required version is
<span class="productname">Tcl</span> 8.4.
</p></li><li class="listitem"><p>
To enable Native Language Support (<acronym class="acronym">NLS</acronym>), that
is, the ability to display a program's messages in a language
other than English, you need an implementation of the
<span class="application">Gettext</span> <acronym class="acronym">API</acronym>. Some operating
systems have this built-in (e.g., <span class="systemitem">Linux</span>, <span class="systemitem">NetBSD</span>,
<span class="systemitem">Solaris</span>), for other systems you
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>.
If you are using the <span class="application">Gettext</span> implementation in
the <acronym class="acronym">GNU</acronym> C library, then you will additionally
need the <span class="productname">GNU Gettext</span> package for some
utility programs. For any of the other implementations you will
not need it.
</p></li><li class="listitem"><p>
You need <span class="productname">OpenSSL</span>, if you want to support
encrypted client connections. <span class="productname">OpenSSL</span> is
also required for random number generation on platforms that do not
have <code class="filename">/dev/urandom</code> (except Windows). The minimum
required version is 1.0.1.
</p></li><li class="listitem"><p>
You need <span class="application">MIT Kerberos</span> (for GSSAPI),
<span class="productname">OpenLDAP</span>, and/or <span class="application">PAM</span>,
if you want to support authentication using those services.
</p></li><li class="listitem"><p>
You need <span class="productname">LZ4</span>, if you want to support
compression of data with that method; see
<a class="xref" href="runtime-config-client.html#GUC-DEFAULT-TOAST-COMPRESSION">default_toast_compression</a> and
<a class="xref" href="runtime-config-wal.html#GUC-WAL-COMPRESSION">wal_compression</a>.
</p></li><li class="listitem"><p>
You need <span class="productname">Zstandard</span>, if you want to support
compression of data with that method; see
<a class="xref" href="runtime-config-wal.html#GUC-WAL-COMPRESSION">wal_compression</a>.
The minimum required version is 1.4.0.
</p></li><li class="listitem"><p>
To build the <span class="productname">PostgreSQL</span> documentation,
there is a separate set of requirements; see
<a class="xref" href="docguide-toolsets.html" title="J.2. Tool Sets">Section J.2</a>.
</p></li></ul></div><p>
</p><p>
If you are building from a <span class="productname">Git</span> tree instead of
using a released source package, or if you want to do server development,
you also need the following packages:
</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>
<a id="id-1.6.4.5.5.2.1.1.1" class="indexterm"></a>
<a id="id-1.6.4.5.5.2.1.1.2" class="indexterm"></a>
<a id="id-1.6.4.5.5.2.1.1.3" class="indexterm"></a>
<a id="id-1.6.4.5.5.2.1.1.4" class="indexterm"></a>
<span class="application">Flex</span> and <span class="application">Bison</span>
are needed to build from a Git checkout, or if you changed the actual
scanner and parser definition files. If you need them, be sure
to get <span class="application">Flex</span> 2.5.35 or later and
<span class="application">Bison</span> 2.3 or later. Other <span class="application">lex</span>
and <span class="application">yacc</span> programs cannot be used.
</p></li><li class="listitem"><p>
<a id="id-1.6.4.5.5.2.2.1.1" class="indexterm"></a>
<span class="application">Perl</span> 5.14 or later is needed to build from a Git checkout,
or if you changed the input files for any of the build steps that
use Perl scripts. If building on Windows you will need
<span class="application">Perl</span> in any case. <span class="application">Perl</span> is
also required to run some test suites.
</p></li></ul></div><p>
</p><p>
If you need to get a <acronym class="acronym">GNU</acronym> package, you can find
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>
for a list) or at <a class="ulink" href="ftp://ftp.gnu.org/gnu/" target="_top">ftp://ftp.gnu.org/gnu/</a>.
</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 16.3 Documentation">Home</a></td><td width="40%" align="right" valign="top"> 17.2. Getting the Source</td></tr></table></div></body></html>
|