diff options
Diffstat (limited to 'doc/src/sgml/html/install-requirements.html')
-rw-r--r-- | doc/src/sgml/html/install-requirements.html | 222 |
1 files changed, 222 insertions, 0 deletions
diff --git a/doc/src/sgml/html/install-requirements.html b/doc/src/sgml/html/install-requirements.html new file mode 100644 index 0000000..a875e01 --- /dev/null +++ b/doc/src/sgml/html/install-requirements.html @@ -0,0 +1,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.2 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 locale provider (see <a class="xref" href="locale.html#LOCALE-PROVIDERS" title="24.1.4. Locale Providers">Section 24.1.4</a>) 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.2 Documentation">Home</a></td><td width="40%" align="right" valign="top"> 17.2. Getting the Source</td></tr></table></div></body></html>
\ No newline at end of file |