4 In general, a modern Unix-compatible platform should be able to run
5 PostgreSQL. The platforms that had received specific testing at the
6 time of release are described in Section 17.6 below.
8 The following software packages are required for building PostgreSQL:
9 * GNU make version 3.81 or newer is required; other make programs or
10 older GNU make versions will not work. (GNU make is sometimes
11 installed under the name gmake.) To test for GNU make enter:
14 * Alternatively, PostgreSQL can be built using Meson. This is the
15 only option for building PostgreSQL on Windows using Visual Studio.
16 For other platforms, using Meson is currently experimental. If you
17 choose to use Meson, then you don't need GNU make, but the other
18 requirements below still apply.
19 The minimum required version of Meson is 0.54.
20 * You need an ISO/ANSI C compiler (at least C99-compliant). Recent
21 versions of GCC are recommended, but PostgreSQL is known to build
22 using a wide variety of compilers from different vendors.
23 * tar is required to unpack the source distribution, in addition to
25 * Flex and Bison are required. Other lex and yacc programs cannot be
26 used. Bison needs to be at least version 2.3.
27 * Perl 5.14 or later is needed during the build process and to run
28 some test suites. (This requirement is separate from the
29 requirements for building PL/Perl; see below.)
30 * The GNU Readline library is used by default. It allows psql (the
31 PostgreSQL command line SQL interpreter) to remember each command
32 you type, and allows you to use arrow keys to recall and edit
33 previous commands. This is very helpful and is strongly
34 recommended. If you don't want to use it then you must specify the
35 --without-readline option to configure. As an alternative, you can
36 often use the BSD-licensed libedit library, originally developed on
37 NetBSD. The libedit library is GNU Readline-compatible and is used
38 if libreadline is not found, or if --with-libedit-preferred is used
39 as an option to configure. If you are using a package-based Linux
40 distribution, be aware that you need both the readline and
41 readline-devel packages, if those are separate in your
43 * The zlib compression library is used by default. If you don't want
44 to use it then you must specify the --without-zlib option to
45 configure. Using this option disables support for compressed
46 archives in pg_dump and pg_restore.
47 * The ICU library is used by default. If you don't want to use it
48 then you must specify the --without-icu option to configure. Using
49 this option disables support for ICU collation features (see
51 ICU support requires the ICU4C package to be installed. The minimum
52 required version of ICU4C is currently 4.2.
53 By default, pkg-config will be used to find the required
54 compilation options. This is supported for ICU4C version 4.6 and
55 later. For older versions, or if pkg-config is not available, the
56 variables ICU_CFLAGS and ICU_LIBS can be specified to configure,
58 ./configure ... ICU_CFLAGS='-I/some/where/include' ICU_LIBS='-L/some/where/lib -
59 licui18n -licuuc -licudata'
61 (If ICU4C is in the default search path for the compiler, then you
62 still need to specify nonempty strings in order to avoid use of
63 pkg-config, for example, ICU_CFLAGS=' '.)
65 The following packages are optional. They are not required in the
66 default configuration, but they are needed when certain build options
67 are enabled, as explained below:
68 * To build the server programming language PL/Perl you need a full
69 Perl installation, including the libperl library and the header
70 files. The minimum required version is Perl 5.14. Since PL/Perl
71 will be a shared library, the libperl library must be a shared
72 library also on most platforms. This appears to be the default in
73 recent Perl versions, but it was not in earlier versions, and in
74 any case it is the choice of whomever installed Perl at your site.
75 configure will fail if building PL/Perl is selected but it cannot
76 find a shared libperl. In that case, you will have to rebuild and
77 install Perl manually to be able to build PL/Perl. During the
78 configuration process for Perl, request a shared library.
79 If you intend to make more than incidental use of PL/Perl, you
80 should ensure that the Perl installation was built with the
81 usemultiplicity option enabled (perl -V will show whether this is
83 * To build the PL/Python server programming language, you need a
84 Python installation with the header files and the sysconfig module.
85 The minimum supported version is Python 3.6.8.
86 Since PL/Python will be a shared library, the libpython library
87 must be a shared library also on most platforms. This is not the
88 case in a default Python installation built from source, but a
89 shared library is available in many operating system distributions.
90 configure will fail if building PL/Python is selected but it cannot
91 find a shared libpython. That might mean that you either have to
92 install additional packages or rebuild (part of) your Python
93 installation to provide this shared library. When building from
94 source, run Python's configure with the --enable-shared flag.
95 * To build the PL/Tcl procedural language, you of course need a Tcl
96 installation. The minimum required version is Tcl 8.4.
97 * To enable Native Language Support (NLS), that is, the ability to
98 display a program's messages in a language other than English, you
99 need an implementation of the Gettext API. Some operating systems
100 have this built-in (e.g., Linux, NetBSD, Solaris), for other
101 systems you can download an add-on package from
102 https://www.gnu.org/software/gettext/. If you are using the Gettext
103 implementation in the GNU C library, then you will additionally
104 need the GNU Gettext package for some utility programs. For any of
105 the other implementations you will not need it.
106 * You need OpenSSL, if you want to support encrypted client
107 connections. OpenSSL is also required for random number generation
108 on platforms that do not have /dev/urandom (except Windows). The
109 minimum required version is 1.1.1.
110 Additionally, LibreSSL is supported using the OpenSSL compatibility
111 layer. The minimum required version is 3.4 (from OpenBSD version
113 * You need MIT Kerberos (for GSSAPI), OpenLDAP, and/or PAM, if you
114 want to support authentication using those services.
115 * You need Curl to build an optional module which implements the
116 OAuth Device Authorization flow for client applications.
117 * You need LZ4, if you want to support compression of data with that
118 method; see default_toast_compression and wal_compression.
119 * You need Zstandard, if you want to support compression of data with
120 that method; see wal_compression. The minimum required version is
122 * To build the PostgreSQL documentation, there is a separate set of
123 requirements; see Section J.2.
125 If you need to get a GNU package, you can find it at your local GNU
126 mirror site (see https://www.gnu.org/prep/ftp for a list) or at
127 ftp://ftp.gnu.org/gnu/.