summaryrefslogtreecommitdiffstats
path: root/doc/src/sgml/html/install-requirements.html
blob: 7fbbb14758c0c8fb5bf49f6445a270c9c20d766b (plain)
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>