]> begriffs open source - ai-pg/blob - full-docs/txt/install-requirements.txt
Convert HTML docs to more streamlined TXT
[ai-pg] / full-docs / txt / install-requirements.txt
1
2 17.1. Requirements #
3
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.
7
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:
12 make --version
13
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
24        either gzip or bzip2.
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
42        distribution.
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
50        Section 23.2).
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,
57        like in this example:
58 ./configure ... ICU_CFLAGS='-I/some/where/include' ICU_LIBS='-L/some/where/lib -
59 licui18n -licuuc -licudata'
60
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=' '.)
64
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
82        the case).
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
112        7.0).
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
121        1.4.0.
122      * To build the PostgreSQL documentation, there is a separate set of
123        requirements; see Section J.2.
124
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/.