diff --git a/doc/src/sgml/installation.sgml b/doc/src/sgml/installation.sgml
index 31ed516ac28..1f2f7d9957d 100644
--- a/doc/src/sgml/installation.sgml
+++ b/doc/src/sgml/installation.sgml
@@ -327,12 +327,12 @@ su - postgres
Also check that you have sufficient disk space. You will need about
- 100 MB for the source tree during compilation and about 20 MB for
+ 350 MB for the source tree during compilation and about 60 MB for
the installation directory. An empty database cluster takes about
- 35 MB; databases take about five times the amount of space that a
+ 40 MB; databases take about five times the amount of space that a
flat text file with the same data would take. If you are going to
run the regression tests you will temporarily need up to an extra
- 150 MB. Use the df command to check free disk
+ 300 MB. Use the df command to check free disk
space.
@@ -351,8 +351,11 @@ su - postgres
gunzip postgresql-&version;.tar.gztar xf postgresql-&version;.tar
- (Use bunzip2 instead of gunzip if you
- have the .bz2 file.)
+ (Use bunzip2 instead of gunzip if
+ you have the .bz2 file. Also, note that most
+ modern versions of tar can unpack compressed archives
+ directly, so you don't really need the
+ separate gunzip or bunzip2 step.)
This will create a directory
postgresql-&version; under the current directory
with the PostgreSQL sources.
@@ -389,10 +392,14 @@ su - postgres
This script will run a number of tests to determine values for various
system dependent variables and detect any quirks of your
operating system, and finally will create several files in the
- build tree to record what it found. You can also run
- configure in a directory outside the source
- tree, if you want to keep the build directory separate. This
- procedure is also called a
+ build tree to record what it found.
+
+
+
+ You can also run configure in a directory outside
+ the source tree, and then build there, if you want to keep the build
+ directory separate from the original source files. This procedure is
+ called a
VPATHVPATH
build. Here's how:
@@ -412,1176 +419,19 @@ su - postgres
You can customize the build and installation process by supplying one
- or more of the following command line options to
- configure:
-
-
-
-
-
-
- Install all files under the directory PREFIX
- instead of /usr/local/pgsql. The actual
- files will be installed into various subdirectories; no files
- will ever be installed directly into the
- PREFIX directory.
-
-
-
- If you have special needs, you can also customize the
- individual subdirectories with the following options. However,
- if you leave these with their defaults, the installation will be
- relocatable, meaning you can move the directory after
- installation. (The man and doc
- locations are not affected by this.)
-
-
-
- For relocatable installs, you might want to use
- configure's --disable-rpath
- option. Also, you will need to tell the operating system how
- to find the shared libraries.
-
-
-
-
-
-
-
-
- You can install architecture-dependent files under a
- different prefix, EXEC-PREFIX, than what
- PREFIX was set to. This can be useful to
- share architecture-independent files between hosts. If you
- omit this, then EXEC-PREFIX is set equal to
- PREFIX and both architecture-dependent and
- independent files will be installed under the same tree,
- which is probably what you want.
-
-
-
-
-
-
-
-
- Specifies the directory for executable programs. The default
- is EXEC-PREFIX/bin, which
- normally means /usr/local/pgsql/bin.
-
-
-
-
-
-
-
-
- Sets the directory for various configuration files,
- PREFIX/etc by default.
-
-
-
-
-
-
-
-
- Sets the location to install libraries and dynamically loadable
- modules. The default is
- EXEC-PREFIX/lib.
-
-
-
-
-
-
-
-
- Sets the directory for installing C and C++ header files. The
- default is PREFIX/include.
-
-
-
-
-
-
-
-
- Sets the root directory for various types of read-only data
- files. This only sets the default for some of the following
- options. The default is
- PREFIX/share.
-
-
-
-
-
-
-
-
- Sets the directory for read-only data files used by the
- installed programs. The default is
- DATAROOTDIR. Note that this has
- nothing to do with where your database files will be placed.
-
-
-
-
-
-
-
-
- Sets the directory for installing locale data, in particular
- message translation catalog files. The default is
- DATAROOTDIR/locale.
-
-
-
-
-
-
-
-
- The man pages that come with PostgreSQL will be installed under
- this directory, in their respective
- manx subdirectories.
- The default is DATAROOTDIR/man.
-
-
-
-
-
-
-
-
- Sets the root directory for installing documentation files,
- except man pages. This only sets the default for
- the following options. The default value for this option is
- DATAROOTDIR/doc/postgresql.
-
-
-
-
-
-
-
-
- The HTML-formatted documentation for
- PostgreSQL will be installed under
- this directory. The default is
- DATAROOTDIR.
-
-
-
-
-
-
-
- Care has been taken to make it possible to install
- PostgreSQL into shared installation locations
- (such as /usr/local/include) without
- interfering with the namespace of the rest of the system. First,
- the string /postgresql is
- automatically appended to datadir,
- sysconfdir, and docdir,
- unless the fully expanded directory name already contains the
- string postgres or
- pgsql. For example, if you choose
- /usr/local as prefix, the documentation will
- be installed in /usr/local/doc/postgresql,
- but if the prefix is /opt/postgres, then it
- will be in /opt/postgres/doc. The public C
- header files of the client interfaces are installed into
- includedir and are namespace-clean. The
- internal header files and the server header files are installed
- into private directories under includedir. See
- the documentation of each interface for information about how to
- access its header files. Finally, a private subdirectory will
- also be created, if appropriate, under libdir
- for dynamically loadable modules.
-
-
-
-
-
-
-
-
-
-
- Append STRING to the PostgreSQL version number. You
- can use this, for example, to mark binaries built from unreleased Git
- snapshots or containing custom patches with an extra version string
- such as a git describe identifier or a
- distribution package release number.
-
-
-
-
-
-
-
-
- DIRECTORIES is a colon-separated list of
- directories that will be added to the list the compiler
- searches for header files. If you have optional packages
- (such as GNU Readline) installed in a non-standard
- location,
- you have to use this option and probably also the corresponding
- option.
-
-
- Example: --with-includes=/opt/gnu/include:/usr/sup/include.
-
-
-
-
-
-
-
-
- DIRECTORIES is a colon-separated list of
- directories to search for libraries. You will probably have
- to use this option (and the corresponding
- option) if you have packages
- installed in non-standard locations.
-
-
- Example: --with-libraries=/opt/gnu/lib:/usr/sup/lib.
-
-
-
-
-
-
-
-
- Enables Native Language Support (NLS),
- that is, the ability to display a program's messages in a
- language other than English.
- LANGUAGES is an optional space-separated
- list of codes of the languages that you want supported, for
- example --enable-nls='de fr'. (The intersection
- between your list and the set of actually provided
- translations will be computed automatically.) If you do not
- specify a list, then all available translations are
- installed.
-
-
-
- To use this option, you will need an implementation of the
- Gettext API; see above.
-
-
-
-
-
-
-
-
- Set NUMBER as the default port number for
- server and clients. The default is 5432. The port can always
- be changed later on, but if you specify it here then both
- server and clients will have the same default compiled in,
- which can be very convenient. Usually the only good reason
- to select a non-default value is if you intend to run multiple
- PostgreSQL servers on the same machine.
-
-
-
-
-
-
-
-
- Build the PL/Perl server-side language.
-
-
-
-
-
-
-
-
- Build the PL/Python server-side language.
-
-
-
-
-
-
-
-
- Build the PL/Tcl server-side language.
-
-
-
-
-
-
-
-
- Tcl installs the file tclConfig.sh, which
- contains configuration information needed to build modules
- interfacing to Tcl. This file is normally found automatically
- at a well-known location, but if you want to use a different
- version of Tcl you can specify the directory in which to look
- for it.
-
-
-
-
-
-
-
-
- Build with support for GSSAPI authentication. On many
- systems, the GSSAPI (usually a part of the Kerberos installation)
- system is not installed in a location
- that is searched by default (e.g., /usr/include,
- /usr/lib), so you must use the options
- and in
- addition to this option. configure will check
- for the required header files and libraries to make sure that
- your GSSAPI installation is sufficient before proceeding.
-
-
-
-
-
-
-
-
- The default name of the Kerberos service principal used
- by GSSAPI.
- postgres is the default. There's usually no
- reason to change this unless you have a Windows environment,
- in which case it must be set to upper case
- POSTGRES.
-
-
-
-
-
-
-
-
- Build with support for LLVM based
- JIT compilation (see ). This
- requires the LLVM library to be installed.
- The minimum required version of LLVM is
- currently 3.9.
-
-
- llvm-configllvm-config
- will be used to find the required compilation options.
- llvm-config, and then
- llvm-config-$major-$minor for all supported
- versions, will be searched on PATH. If that would not
- yield the correct binary, use LLVM_CONFIG to specify a
- path to the correct llvm-config. For example
-
-./configure ... --with-llvm LLVM_CONFIG='/path/to/llvm/bin/llvm-config'
-
-
-
-
- LLVM support requires a compatible
- clang compiler (specified, if necessary, using the
- CLANG environment variable), and a working C++
- compiler (specified, if necessary, using the CXX
- environment variable).
-
-
-
-
-
-
-
-
- Build with support for
- the ICUICU
- library. This requires the ICU4C package
- to be installed. The minimum required version
- of ICU4C is currently 4.2.
-
-
-
- By default,
- pkg-configpkg-config
- will be used to find the required compilation options. This is
- supported for ICU4C version 4.6 and later.
- For older versions, or if pkg-config is
- not available, the variables ICU_CFLAGS
- and ICU_LIBS can be specified
- to configure, like in this example:
-
-./configure ... --with-icu ICU_CFLAGS='-I/some/where/include' ICU_LIBS='-L/some/where/lib -licui18n -licuuc -licudata'
-
- (If ICU4C is in the default search path
- for the compiler, then you still need to specify a nonempty string in
- order to avoid use of pkg-config, for
- example, ICU_CFLAGS=' '.)
-
-
-
-
-
-
-
- OpenSSL
- SSL
-
-
-
-
- Build with support for SSL (encrypted)
- connections. This requires the OpenSSL
- package to be installed. configure will check
- for the required header files and libraries to make sure that
- your OpenSSL installation is sufficient
- before proceeding.
-
-
-
-
-
-
-
-
- Build with PAMPAM
- (Pluggable Authentication Modules) support.
-
-
-
-
-
-
-
-
- Build with BSD Authentication support.
- (The BSD Authentication framework is
- currently only available on OpenBSD.)
-
-
-
-
-
-
-
-
- Build with LDAPLDAP
- support for authentication and connection parameter lookup (see
- and
- for more information). On Unix,
- this requires the OpenLDAP package to be
- installed. On Windows, the default WinLDAP
- library is used. configure will check for the required
- header files and libraries to make sure that your
- OpenLDAP installation is sufficient before
- proceeding.
-
-
-
-
-
-
-
-
- Build with support
- for systemdsystemd
- service notifications. This improves integration if the server binary
- is started under systemd but has no impact
- otherwise; see for more
- information. libsystemd and the
- associated header files need to be installed to be able to use this
- option.
-
-
-
-
-
-
-
-
- Prevents use of the Readline library
- (and libedit as well). This option disables
- command-line editing and history in
- psql, so it is not recommended.
-
-
-
-
-
-
-
-
- Favors the use of the BSD-licensed libedit library
- rather than GPL-licensed Readline. This option
- is significant only if you have both libraries installed; the
- default in that case is to use Readline.
-
-
-
-
-
-
-
-
- Build with Bonjour support. This requires Bonjour support
- in your operating system. Recommended on macOS.
-
-
-
-
-
-
-
-
- Build the module
- (which provides functions to generate UUIDs), using the specified
- UUID library.UUID
- LIBRARY must be one of:
-
-
-
-
- to use the UUID functions found in FreeBSD, NetBSD,
- and some other BSD-derived systems
-
-
-
-
- to use the UUID library created by
- the e2fsprogs project; this library is present in most
- Linux systems and in macOS, and can be obtained for other
- platforms as well
-
-
-
-
- to use the OSSP UUID library
-
-
-
-
-
-
-
-
-
-
- Obsolete equivalent of --with-uuid=ossp.
-
-
-
-
-
-
-
-
- Build with libxml (enables SQL/XML support). Libxml version 2.6.23 or
- later is required for this feature.
-
-
-
- Libxml installs a program xml2-config that
- can be used to detect the required compiler and linker
- options. PostgreSQL will use it automatically if found. To
- specify a libxml installation at an unusual location, you can
- either set the environment variable
- XML2_CONFIG to point to the
- xml2-config program belonging to the
- installation, or use the options
- and
- .
-
-
-
-
-
-
-
-
- Use libxslt when building the
-
- module. xml2 relies on this library
- to perform XSL transformations of XML.
-
-
-
-
-
-
-
-
- Disable passing float4 values by value, causing them
- to be passed by reference instead. This option costs
- performance, but may be needed for compatibility with old
- user-defined functions that are written in C and use the
- version 0 calling convention. A better long-term
- solution is to update any such functions to use the
- version 1 calling convention.
-
-
-
-
-
-
-
-
- Disable passing float8 values by value, causing them
- to be passed by reference instead. This option costs
- performance, but may be needed for compatibility with old
- user-defined functions that are written in C and use the
- version 0 calling convention. A better long-term
- solution is to update any such functions to use the
- version 1 calling convention.
- Note that this option affects not only float8, but also int8 and some
- related types such as timestamp.
- On 32-bit platforms, is the default
- and it is not allowed to select .
-
-
-
-
-
-
-
-
- Set the segment size, in gigabytes. Large tables are
- divided into multiple operating-system files, each of size equal
- to the segment size. This avoids problems with file size limits
- that exist on many platforms. The default segment size, 1 gigabyte,
- is safe on all supported platforms. If your operating system has
- largefile support (which most do, nowadays), you can use
- a larger segment size. This can be helpful to reduce the number of
- file descriptors consumed when working with very large tables.
- But be careful not to select a value larger than is supported
- by your platform and the file systems you intend to use. Other
- tools you might wish to use, such as tar, could
- also set limits on the usable file size.
- It is recommended, though not absolutely required, that this value
- be a power of 2.
- Note that changing this value requires an initdb.
-
-
-
-
-
-
-
-
- Set the block size, in kilobytes. This is the unit
- of storage and I/O within tables. The default, 8 kilobytes,
- is suitable for most situations; but other values may be useful
- in special cases.
- The value must be a power of 2 between 1 and 32 (kilobytes).
- Note that changing this value requires an initdb.
-
-
-
-
-
-
-
-
- Set the WAL block size, in kilobytes. This is the unit
- of storage and I/O within the WAL log. The default, 8 kilobytes,
- is suitable for most situations; but other values may be useful
- in special cases.
- The value must be a power of 2 between 1 and 64 (kilobytes).
- Note that changing this value requires an initdb.
-
-
-
-
-
-
-
-
- Allow the build to succeed even if PostgreSQL
- has no CPU spinlock support for the platform. The lack of
- spinlock support will result in poor performance; therefore,
- this option should only be used if the build aborts and
- informs you that the platform lacks spinlock support. If this
- option is required to build PostgreSQL on
- your platform, please report the problem to the
- PostgreSQL developers.
-
-
-
-
-
-
-
-
- Disable the thread-safety of client libraries. This prevents
- concurrent threads in libpq and
- ECPG programs from safely controlling
- their private connection handles.
-
-
-
-
-
-
-
- time zone data
-
-
-
-
- PostgreSQL includes its own time zone database,
- which it requires for date and time operations. This time zone
- database is in fact compatible with the IANA time zone
- database provided by many operating systems such as FreeBSD,
- Linux, and Solaris, so it would be redundant to install it again.
- When this option is used, the system-supplied time zone database
- in DIRECTORY is used instead of the one
- included in the PostgreSQL source distribution.
- DIRECTORY must be specified as an
- absolute path. /usr/share/zoneinfo is a
- likely directory on some operating systems. Note that the
- installation routine will not detect mismatching or erroneous time
- zone data. If you use this option, you are advised to run the
- regression tests to verify that the time zone data you have
- pointed to works correctly with PostgreSQL.
-
-
- cross compilation
-
-
- This option is mainly aimed at binary package distributors
- who know their target operating system well. The main
- advantage of using this option is that the PostgreSQL package
- won't need to be upgraded whenever any of the many local
- daylight-saving time rules change. Another advantage is that
- PostgreSQL can be cross-compiled more straightforwardly if the
- time zone database files do not need to be built during the
- installation.
-
-
-
-
-
-
-
-
-
- zlib
-
- Prevents use of the Zlib library. This disables
- support for compressed archives in pg_dump
- and pg_restore.
- This option is only intended for those rare systems where this
- library is not available.
-
-
-
-
-
-
-
-
- Compiles all programs and libraries with debugging symbols.
- This means that you can run the programs in a debugger
- to analyze problems. This enlarges the size of the installed
- executables considerably, and on non-GCC compilers it usually
- also disables compiler optimization, causing slowdowns. However,
- having the symbols available is extremely helpful for dealing
- with any problems that might arise. Currently, this option is
- recommended for production installations only if you use GCC.
- But you should always have it on if you are doing development work
- or running a beta version.
-
-
-
-
-
-
-
-
- If using GCC, all programs and libraries are compiled with
- code coverage testing instrumentation. When run, they
- generate files in the build directory with code coverage
- metrics.
- See
- for more information. This option is for use only with GCC
- and when doing development work.
-
-
-
-
-
-
-
-
- If using GCC, all programs and libraries are compiled so they
- can be profiled. On backend exit, a subdirectory will be created
- that contains the gmon.out file for use in profiling.
- This option is for use only with GCC and when doing development work.
-
-
-
-
-
-
-
-
- Enables assertion checks in the server, which test for
- many cannot happen conditions. This is invaluable for
- code development purposes, but the tests can slow down the
- server significantly.
- Also, having the tests turned on won't necessarily enhance the
- stability of your server! The assertion checks are not categorized
- for severity, and so what might be a relatively harmless bug will
- still lead to server restarts if it triggers an assertion
- failure. This option is not recommended for production use, but
- you should have it on for development work or when running a beta
- version.
-
-
-
-
-
-
-
-
- Enables automatic dependency tracking. With this option, the
- makefiles are set up so that all affected object files will
- be rebuilt when any header file is changed. This is useful
- if you are doing development work, but is just wasted overhead
- if you intend only to compile once and install. At present,
- this option only works with GCC.
-
-
-
-
-
-
-
-
-
- DTrace
-
- Compiles PostgreSQL with support for the
- dynamic tracing tool DTrace.
- See
- for more information.
-
-
-
- To point to the dtrace program, the
- environment variable DTRACE can be set. This
- will often be necessary because dtrace is
- typically installed under /usr/sbin,
- which might not be in the path.
-
-
-
- Extra command-line options for the dtrace program
- can be specified in the environment variable
- DTRACEFLAGS. On Solaris,
- to include DTrace support in a 64-bit binary, you must specify
- DTRACEFLAGS="-64" to configure. For example,
- using the GCC compiler:
-
-./configure CC='gcc -m64' --enable-dtrace DTRACEFLAGS='-64' ...
-
- Using Sun's compiler:
-
-./configure CC='/opt/SUNWspro/bin/cc -xtarget=native64' --enable-dtrace DTRACEFLAGS='-64' ...
-
-
-
-
-
-
-
-
-
- Enable tests using the Perl TAP tools. This requires a Perl
- installation and the Perl module IPC::Run.
- See for more information.
-
-
-
-
-
-
-
- If you prefer a C compiler different from the one
- configure picks, you can set the
- environment variable CC to the program of your choice.
- By default, configure will pick
- gcc if available, else the platform's
- default (usually cc). Similarly, you can override the
- default compiler flags if needed with the CFLAGS variable.
-
-
-
- You can specify environment variables on the
- configure command line, for example:
-
-./configure CC=/opt/bin/gcc CFLAGS='-O2 -pipe'
-
-
-
-
- Here is a list of the significant variables that can be set in
- this manner:
-
-
-
- BISON
-
-
- Bison program
-
-
-
-
-
- CC
-
-
- C compiler
-
-
-
-
-
- CFLAGS
-
-
- options to pass to the C compiler
-
-
-
-
-
- CLANG
-
-
- path to clang program used to process source code
- for inlining when compiling with --with-llvm
-
-
-
-
-
- CPP
-
-
- C preprocessor
-
-
-
-
-
- CPPFLAGS
-
-
- options to pass to the C preprocessor
-
-
-
-
-
- CXX
-
-
- C++ compiler
-
-
-
-
-
- CXXFLAGS
-
-
- options to pass to the C++ compiler
-
-
-
-
-
- DTRACE
-
-
- location of the dtrace program
-
-
-
-
-
- DTRACEFLAGS
-
-
- options to pass to the dtrace program
-
-
-
-
-
- FLEX
-
-
- Flex program
-
-
-
-
-
- LDFLAGS
-
-
- options to use when linking either executables or shared libraries
-
-
-
-
-
- LDFLAGS_EX
-
-
- additional options for linking executables only
-
-
-
-
-
- LDFLAGS_SL
-
-
- additional options for linking shared libraries only
-
-
-
-
-
- LLVM_CONFIG
-
-
- llvm-config program used to locate the
- LLVM installation.
-
-
-
-
-
- MSGFMT
-
-
- msgfmt program for native language support
-
-
-
-
-
- PERL
-
-
- Perl interpreter program. This will be used to determine the
- dependencies for building PL/Perl. The default is
- perl.
-
-
-
-
-
- PYTHON
-
-
- Python interpreter program. This will be used to
- determine the dependencies for building PL/Python. Also,
- whether Python 2 or 3 is specified here (or otherwise
- implicitly chosen) determines which variant of the PL/Python
- language becomes available. See
-
- for more information. If this is not set, the following are probed
- in this order: python python3 python2.
-
-
-
-
-
- TCLSH
-
-
- Tcl interpreter program. This will be used to
- determine the dependencies for building PL/Tcl, and it will
- be substituted into Tcl scripts.
-
-
-
-
-
- XML2_CONFIG
-
-
- xml2-config program used to locate the
- libxml installation.
-
-
-
-
-
-
-
- Sometimes it is useful to add compiler flags after-the-fact to the set
- that were chosen by configure. An important example is
- that gcc's option cannot be included
- in the CFLAGS passed to configure, because
- it will break many of configure's built-in tests. To add
- such flags, include them in the COPT environment variable
- while running make. The contents of COPT
- are added to both the CFLAGS and LDFLAGS
- options set up by configure. For example, you could do
-
-make COPT='-Werror'
-
- or
-
-export COPT='-Werror'
-make
-
-
-
-
-
- When developing code inside the server, it is recommended to
- use the configure options (which
- turns on many run-time error checks) and
- (which improves the usefulness of debugging tools).
-
-
-
- If using GCC, it is best to build with an optimization level of
- at least , because using no optimization
- () disables some important compiler warnings (such
- as the use of uninitialized variables). However, non-zero
- optimization levels can complicate debugging because stepping
- through compiled code will usually not match up one-to-one with
- source code lines. If you get confused while trying to debug
- optimized code, recompile the specific files of interest with
- . An easy way to do this is by passing an option
- to make: make PROFILE=-O0 file.o.
-
-
-
- The COPT and PROFILE environment variables are
- actually handled identically by the PostgreSQL
- makefiles. Which to use is a matter of preference, but a common habit
- among developers is to use PROFILE for one-time flag
- adjustments, while COPT might be kept set all the time.
-
-
-
+ or more command line options to configure.
+ Typically you would customize the install location, or the set of
+ optional features that are built. configure
+ has a large number of options, which are described in
+ .
+
+
+
+ Also, configure responds to certain environment
+ variables, as described in .
+ These provide additional ways to customize the configuration.
+
+
Build
@@ -1762,12 +612,1331 @@ build-postgresql:
rebuilding. Without this, your changes in configuration choices
might not propagate everywhere they need to.
+
+
+ configure Options
+
+
+ configure options
+
+
+
+ configure's command line options are explained below.
+ This list is not exhaustive (use ./configure --help
+ to get one that is). The options not covered here are meant for
+ advanced use-cases such as cross-compilation, and are documented in
+ the standard Autoconf documentation.
+
+
+
+ Installation Locations
+
+
+ These options control where make install will put
+ the files. The option is sufficient for
+ most cases. If you have special needs, you can customize the
+ installation subdirectories with the other options described in this
+ section. Beware however that changing the relative locations of the
+ different subdirectories may render the installation non-relocatable,
+ meaning you won't be able to move it after installation.
+ (The man and doc locations are
+ not affected by this restriction.) For relocatable installs, you
+ might want to use the --disable-rpath option
+ described later.
+
+
+
+
+
+
+
+ Install all files under the directory PREFIX
+ instead of /usr/local/pgsql. The actual
+ files will be installed into various subdirectories; no files
+ will ever be installed directly into the
+ PREFIX directory.
+
+
+
+
+
+
+
+
+ You can install architecture-dependent files under a
+ different prefix, EXEC-PREFIX, than what
+ PREFIX was set to. This can be useful to
+ share architecture-independent files between hosts. If you
+ omit this, then EXEC-PREFIX is set equal to
+ PREFIX and both architecture-dependent and
+ independent files will be installed under the same tree,
+ which is probably what you want.
+
+
+
+
+
+
+
+
+ Specifies the directory for executable programs. The default
+ is EXEC-PREFIX/bin, which
+ normally means /usr/local/pgsql/bin.
+
+
+
+
+
+
+
+
+ Sets the directory for various configuration files,
+ PREFIX/etc by default.
+
+
+
+
+
+
+
+
+ Sets the location to install libraries and dynamically loadable
+ modules. The default is
+ EXEC-PREFIX/lib.
+
+
+
+
+
+
+
+
+ Sets the directory for installing C and C++ header files. The
+ default is PREFIX/include.
+
+
+
+
+
+
+
+
+ Sets the root directory for various types of read-only data
+ files. This only sets the default for some of the following
+ options. The default is
+ PREFIX/share.
+
+
+
+
+
+
+
+
+ Sets the directory for read-only data files used by the
+ installed programs. The default is
+ DATAROOTDIR. Note that this has
+ nothing to do with where your database files will be placed.
+
+
+
+
+
+
+
+
+ Sets the directory for installing locale data, in particular
+ message translation catalog files. The default is
+ DATAROOTDIR/locale.
+
+
+
+
+
+
+
+
+ The man pages that come with PostgreSQL will be installed under
+ this directory, in their respective
+ manx subdirectories.
+ The default is DATAROOTDIR/man.
+
+
+
+
+
+
+
+
+ Sets the root directory for installing documentation files,
+ except man pages. This only sets the default for
+ the following options. The default value for this option is
+ DATAROOTDIR/doc/postgresql.
+
+
+
+
+
+
+
+
+ The HTML-formatted documentation for
+ PostgreSQL will be installed under
+ this directory. The default is
+ DATAROOTDIR.
+
+
+
+
+
+
+
+ Care has been taken to make it possible to install
+ PostgreSQL into shared installation locations
+ (such as /usr/local/include) without
+ interfering with the namespace of the rest of the system. First,
+ the string /postgresql is
+ automatically appended to datadir,
+ sysconfdir, and docdir,
+ unless the fully expanded directory name already contains the
+ string postgres or
+ pgsql. For example, if you choose
+ /usr/local as prefix, the documentation will
+ be installed in /usr/local/doc/postgresql,
+ but if the prefix is /opt/postgres, then it
+ will be in /opt/postgres/doc. The public C
+ header files of the client interfaces are installed into
+ includedir and are namespace-clean. The
+ internal header files and the server header files are installed
+ into private directories under includedir. See
+ the documentation of each interface for information about how to
+ access its header files. Finally, a private subdirectory will
+ also be created, if appropriate, under libdir
+ for dynamically loadable modules.
+
+
+
+
+
+
+ PostgreSQL Features
+
+
+ The options described in this section enable building of
+ various PostgreSQL features that are not
+ built by default. Most of these are non-default only because they
+ require additional software, as described in
+ .
+
+
+
+
+
+
+
+
+ Enables Native Language Support (NLS),
+ that is, the ability to display a program's messages in a
+ language other than English.
+ LANGUAGES is an optional space-separated
+ list of codes of the languages that you want supported, for
+ example --enable-nls='de fr'. (The intersection
+ between your list and the set of actually provided
+ translations will be computed automatically.) If you do not
+ specify a list, then all available translations are
+ installed.
+
+
+
+ To use this option, you will need an implementation of the
+ Gettext API.
+
+
+
+
+
+
+
+
+ Build the PL/Perl server-side language.
+
+
+
+
+
+
+
+
+ Build the PL/Python server-side language.
+
+
+
+
+
+
+
+
+ Build the PL/Tcl server-side language.
+
+
+
+
+
+
+
+
+ Tcl installs the file tclConfig.sh, which
+ contains configuration information needed to build modules
+ interfacing to Tcl. This file is normally found automatically
+ at a well-known location, but if you want to use a different
+ version of Tcl you can specify the directory in which to look
+ for tclConfig.sh.
+
+
+
+
+
+
+
+
+ Build with support for
+ the ICUICU
+ library, enabling use of ICU collation
+ features (see
+ ).
+ This requires the ICU4C package
+ to be installed. The minimum required version
+ of ICU4C is currently 4.2.
+
+
+
+ By default,
+ pkg-configpkg-config
+ will be used to find the required compilation options. This is
+ supported for ICU4C version 4.6 and later.
+ For older versions, or if pkg-config is
+ not available, the variables ICU_CFLAGS
+ and ICU_LIBS can be specified
+ to configure, like in this example:
+
+./configure ... --with-icu ICU_CFLAGS='-I/some/where/include' ICU_LIBS='-L/some/where/lib -licui18n -licuuc -licudata'
+
+ (If ICU4C is in the default search path
+ for the compiler, then you still need to specify nonempty strings in
+ order to avoid use of pkg-config, for
+ example, ICU_CFLAGS=' '.)
+
+
+
+
+
+
+
+
+ Build with support for LLVM based
+ JIT compilation (see ). This
+ requires the LLVM library to be installed.
+ The minimum required version of LLVM is
+ currently 3.9.
+
+
+ llvm-configllvm-config
+ will be used to find the required compilation options.
+ llvm-config, and then
+ llvm-config-$major-$minor for all supported
+ versions, will be searched for in your PATH. If
+ that would not yield the desired program,
+ use LLVM_CONFIG to specify a path to the
+ correct llvm-config. For example
+
+./configure ... --with-llvm LLVM_CONFIG='/path/to/llvm/bin/llvm-config'
+
+
+
+
+ LLVM support requires a compatible
+ clang compiler (specified, if necessary, using the
+ CLANG environment variable), and a working C++
+ compiler (specified, if necessary, using the CXX
+ environment variable).
+
+
+
+
+
+
+
+ OpenSSL
+ SSL
+
+
+
+
+ Build with support for SSL (encrypted)
+ connections. This requires the OpenSSL
+ package to be installed. configure will check
+ for the required header files and libraries to make sure that
+ your OpenSSL installation is sufficient
+ before proceeding.
+
+
+
+
+
+
+
+
+ Build with support for GSSAPI authentication. On many systems, the
+ GSSAPI system (usually a part of the Kerberos installation) is not
+ installed in a location
+ that is searched by default (e.g., /usr/include,
+ /usr/lib), so you must use the options
+ and in
+ addition to this option. configure will check
+ for the required header files and libraries to make sure that
+ your GSSAPI installation is sufficient before proceeding.
+
+
+
+
+
+
+
+
+ Build with LDAPLDAP
+ support for authentication and connection parameter lookup (see
+ and
+ for more information). On Unix,
+ this requires the OpenLDAP package to be
+ installed. On Windows, the default WinLDAP
+ library is used. configure will check for the required
+ header files and libraries to make sure that your
+ OpenLDAP installation is sufficient before
+ proceeding.
+
+
+
+
+
+
+
+
+ Build with PAMPAM
+ (Pluggable Authentication Modules) support.
+
+
+
+
+
+
+
+
+ Build with BSD Authentication support.
+ (The BSD Authentication framework is
+ currently only available on OpenBSD.)
+
+
+
+
+
+
+
+
+ Build with support
+ for systemdsystemd
+ service notifications. This improves integration if the server
+ is started under systemd but has no impact
+ otherwise; see for more
+ information. libsystemd and the
+ associated header files need to be installed to use this option.
+
+
+
+
+
+
+
+
+ Build with support for Bonjour automatic service discovery.
+ This requires Bonjour support in your operating system.
+ Recommended on macOS.
+
+
+
+
+
+
+
+
+ Build the module
+ (which provides functions to generate UUIDs), using the specified
+ UUID library.UUID
+ LIBRARY must be one of:
+
+
+
+
+ to use the UUID functions found in FreeBSD, NetBSD,
+ and some other BSD-derived systems
+
+
+
+
+ to use the UUID library created by
+ the e2fsprogs project; this library is present in most
+ Linux systems and in macOS, and can be obtained for other
+ platforms as well
+
+
+
+
+ to use the OSSP UUID library
+
+
+
+
+
+
+
+
+
+
+ Obsolete equivalent of --with-uuid=ossp.
+
+
+
+
+
+
+
+
+ Build with libxml, enabling SQL/XML support. Libxml version 2.6.23 or
+ later is required for this feature.
+
+
+
+ Libxml installs a program xml2-config that
+ can be used to detect the required compiler and linker
+ options. PostgreSQL will use it automatically if found. To
+ specify a libxml installation at an unusual location, you can
+ either set the environment variable
+ XML2_CONFIG to point to the
+ xml2-config program belonging to the
+ installation, or use the options
+ and
+ .
+
+
+
+
+
+
+
+
+ Build with libxslt, enabling the
+
+ module to perform XSL transformations of XML.
+ must be specified as well.
+
+
+
+
+
+
+
+
+
+ Anti-Features
+
+
+ The options described in this section allow disabling
+ certain PostgreSQL features that are built
+ by default, but which might need to be turned off if the required
+ software or system features are not available. Using these options is
+ not recommended unless really necessary.
+
+
+
+
+
+
+
+
+ Prevents use of the Readline library
+ (and libedit as well). This option disables
+ command-line editing and history in
+ psql.
+
+
+
+
+
+
+
+
+ Favors the use of the BSD-licensed libedit library
+ rather than GPL-licensed Readline. This option
+ is significant only if you have both libraries installed; the
+ default in that case is to use Readline.
+
+
+
+
+
+
+
+
+
+ zlib
+
+ Prevents use of the Zlib library.
+ This disables
+ support for compressed archives in pg_dump
+ and pg_restore.
+
+
+
+
+
+
+
+
+ Disable passing float4 values by value, causing them
+ to be passed by reference instead. This option costs
+ performance, but may be needed for compatibility with very old
+ user-defined functions written in C.
+
+
+
+
+
+
+
+
+ Disable passing float8 values by value, causing them
+ to be passed by reference instead. This option costs
+ performance, but may be needed for compatibility with very old
+ user-defined functions written in C.
+ Note that this option affects not only float8, but also int8 and some
+ related types such as timestamp.
+ On 32-bit platforms, is the default
+ and it is not allowed to select .
+
+
+
+
+
+
+
+
+ Allow the build to succeed even if PostgreSQL
+ has no CPU spinlock support for the platform. The lack of
+ spinlock support will result in very poor performance; therefore,
+ this option should only be used if the build aborts and
+ informs you that the platform lacks spinlock support. If this
+ option is required to build PostgreSQL on
+ your platform, please report the problem to the
+ PostgreSQL developers.
+
+
+
+
+
+
+
+
+ Disable use of CPU atomic operations. This option does nothing on
+ platforms that lack such operations. On platforms that do have
+ them, this will result in poor performance. This option is only
+ useful for debugging or making performance comparisons.
+
+
+
+
+
+
+
+
+ Disable the thread-safety of client libraries. This prevents
+ concurrent threads in libpq and
+ ECPG programs from safely controlling
+ their private connection handles. Use this only on platforms
+ with deficient threading support.
+
+
+
+
+
+
+
+
+
+ Build Process Details
+
+
+
+
+
+
+
+ DIRECTORIES is a colon-separated list of
+ directories that will be added to the list the compiler
+ searches for header files. If you have optional packages
+ (such as GNU Readline) installed in a non-standard
+ location,
+ you have to use this option and probably also the corresponding
+ option.
+
+
+ Example: --with-includes=/opt/gnu/include:/usr/sup/include.
+
+
+
+
+
+
+
+
+ DIRECTORIES is a colon-separated list of
+ directories to search for libraries. You will probably have
+ to use this option (and the corresponding
+ option) if you have packages
+ installed in non-standard locations.
+
+
+ Example: --with-libraries=/opt/gnu/lib:/usr/sup/lib.
+
+
+
+
+
+
+
+ time zone data
+
+
+
+
+ PostgreSQL includes its own time zone database,
+ which it requires for date and time operations. This time zone
+ database is in fact compatible with the IANA time zone
+ database provided by many operating systems such as FreeBSD,
+ Linux, and Solaris, so it would be redundant to install it again.
+ When this option is used, the system-supplied time zone database
+ in DIRECTORY is used instead of the one
+ included in the PostgreSQL source distribution.
+ DIRECTORY must be specified as an
+ absolute path. /usr/share/zoneinfo is a
+ likely directory on some operating systems. Note that the
+ installation routine will not detect mismatching or erroneous time
+ zone data. If you use this option, you are advised to run the
+ regression tests to verify that the time zone data you have
+ pointed to works correctly with PostgreSQL.
+
+
+ cross compilation
+
+
+ This option is mainly aimed at binary package distributors
+ who know their target operating system well. The main
+ advantage of using this option is that the PostgreSQL package
+ won't need to be upgraded whenever any of the many local
+ daylight-saving time rules change. Another advantage is that
+ PostgreSQL can be cross-compiled more straightforwardly if the
+ time zone database files do not need to be built during the
+ installation.
+
+
+
+
+
+
+
+
+ Append STRING to the PostgreSQL version number. You
+ can use this, for example, to mark binaries built from unreleased Git
+ snapshots or containing custom patches with an extra version string,
+ such as a git describe identifier or a
+ distribution package release number.
+
+
+
+
+
+
+
+
+ Do not mark PostgreSQL's executables
+ to indicate that they should search for shared libraries in the
+ installation's library directory (see ).
+ On most platforms, this marking uses an absolute path to the
+ library directory, so that it will be unhelpful if you relocate
+ the installation later. However, you will then need to provide
+ some other way for the executables to find the shared libraries.
+ Typically this requires configuring the operating system's
+ dynamic linker to search the library directory; see
+ for more detail.
+
+
+
+
+
+
+
+
+
+ Miscellaneous
+
+
+ It's fairly common, particularly for test builds, to adjust the
+ default port number with .
+ The other options in this section are recommended only for advanced
+ users.
+
+
+
+
+
+
+
+
+ Set NUMBER as the default port number for
+ server and clients. The default is 5432. The port can always
+ be changed later on, but if you specify it here then both
+ server and clients will have the same default compiled in,
+ which can be very convenient. Usually the only good reason
+ to select a non-default value is if you intend to run multiple
+ PostgreSQL servers on the same machine.
+
+
+
+
+
+
+
+
+ The default name of the Kerberos service principal used
+ by GSSAPI.
+ postgres is the default. There's usually no
+ reason to change this unless you are building for a Windows
+ environment, in which case it must be set to upper case
+ POSTGRES.
+
+
+
+
+
+
+
+
+ Set the segment size, in gigabytes. Large tables are
+ divided into multiple operating-system files, each of size equal
+ to the segment size. This avoids problems with file size limits
+ that exist on many platforms. The default segment size, 1 gigabyte,
+ is safe on all supported platforms. If your operating system has
+ largefile support (which most do, nowadays), you can use
+ a larger segment size. This can be helpful to reduce the number of
+ file descriptors consumed when working with very large tables.
+ But be careful not to select a value larger than is supported
+ by your platform and the file systems you intend to use. Other
+ tools you might wish to use, such as tar, could
+ also set limits on the usable file size.
+ It is recommended, though not absolutely required, that this value
+ be a power of 2.
+ Note that changing this value breaks on-disk database compatibility,
+ meaning you cannot use pg_upgrade to upgrade to
+ a build with a different segment size.
+
+
+
+
+
+
+
+
+ Set the block size, in kilobytes. This is the unit
+ of storage and I/O within tables. The default, 8 kilobytes,
+ is suitable for most situations; but other values may be useful
+ in special cases.
+ The value must be a power of 2 between 1 and 32 (kilobytes).
+ Note that changing this value breaks on-disk database compatibility,
+ meaning you cannot use pg_upgrade to upgrade to
+ a build with a different block size.
+
+
+
+
+
+
+
+
+ Set the WAL block size, in kilobytes. This is the unit
+ of storage and I/O within the WAL log. The default, 8 kilobytes,
+ is suitable for most situations; but other values may be useful
+ in special cases.
+ The value must be a power of 2 between 1 and 64 (kilobytes).
+ Note that changing this value breaks on-disk database compatibility,
+ meaning you cannot use pg_upgrade to upgrade to
+ a build with a different WAL block size.
+
+
+
+
+
+
+
+
+
+ Developer Options
+
+
+ Most of the options in this section are only of interest for
+ developing or debugging PostgreSQL.
+ They are not recommended for production builds, except
+ for , which can be useful to enable
+ detailed bug reports in the unlucky event that you encounter a bug.
+ On platforms supporting DTrace,
+ may also be reasonable to use in production.
+
+
+
+ When building an installation that will be used to develop code inside
+ the server, it is recommended to use at least the
+ options
+ and .
+
+
+
+
+
+
+
+
+ Compiles all programs and libraries with debugging symbols.
+ This means that you can run the programs in a debugger
+ to analyze problems. This enlarges the size of the installed
+ executables considerably, and on non-GCC compilers it usually
+ also disables compiler optimization, causing slowdowns. However,
+ having the symbols available is extremely helpful for dealing
+ with any problems that might arise. Currently, this option is
+ recommended for production installations only if you use GCC.
+ But you should always have it on if you are doing development work
+ or running a beta version.
+
+
+
+
+
+
+
+
+ Enables assertion checks in the server, which test for
+ many cannot happen conditions. This is invaluable for
+ code development purposes, but the tests can slow down the
+ server significantly.
+ Also, having the tests turned on won't necessarily enhance the
+ stability of your server! The assertion checks are not categorized
+ for severity, and so what might be a relatively harmless bug will
+ still lead to server restarts if it triggers an assertion
+ failure. This option is not recommended for production use, but
+ you should have it on for development work or when running a beta
+ version.
+
+
+
+
+
+
+
+
+ Enable tests using the Perl TAP tools. This requires a Perl
+ installation and the Perl module IPC::Run.
+ See for more information.
+
+
+
+
+
+
+
+
+ Enables automatic dependency tracking. With this option, the
+ makefiles are set up so that all affected object files will
+ be rebuilt when any header file is changed. This is useful
+ if you are doing development work, but is just wasted overhead
+ if you intend only to compile once and install. At present,
+ this option only works with GCC.
+
+
+
+
+
+
+
+
+ If using GCC, all programs and libraries are compiled with
+ code coverage testing instrumentation. When run, they
+ generate files in the build directory with code coverage
+ metrics.
+ See
+ for more information. This option is for use only with GCC
+ and when doing development work.
+
+
+
+
+
+
+
+
+ If using GCC, all programs and libraries are compiled so they
+ can be profiled. On backend exit, a subdirectory will be created
+ that contains the gmon.out file containing
+ profile data.
+ This option is for use only with GCC and when doing development work.
+
+
+
+
+
+
+
+
+
+ DTrace
+
+ Compiles PostgreSQL with support for the
+ dynamic tracing tool DTrace.
+ See
+ for more information.
+
+
+
+ To point to the dtrace program, the
+ environment variable DTRACE can be set. This
+ will often be necessary because dtrace is
+ typically installed under /usr/sbin,
+ which might not be in your PATH.
+
+
+
+ Extra command-line options for the dtrace program
+ can be specified in the environment variable
+ DTRACEFLAGS. On Solaris,
+ to include DTrace support in a 64-bit binary, you must specify
+ DTRACEFLAGS="-64". For example,
+ using the GCC compiler:
+
+./configure CC='gcc -m64' --enable-dtrace DTRACEFLAGS='-64' ...
+
+ Using Sun's compiler:
+
+./configure CC='/opt/SUNWspro/bin/cc -xtarget=native64' --enable-dtrace DTRACEFLAGS='-64' ...
+
+
+
+
+
+
+
+
+
+
+
+ configure Environment Variables
+
+
+ configure environment variables
+
+
+
+ In addition to the ordinary command-line options described above,
+ configure responds to a number of environment
+ variables.
+ You can specify environment variables on the
+ configure command line, for example:
+
+./configure CC=/opt/bin/gcc CFLAGS='-O2 -pipe'
+
+ In this usage an environment variable is little different from a
+ command-line option.
+ You can also set such variables beforehand:
+
+export CC=/opt/bin/gcc
+export CFLAGS='-O2 -pipe'
+./configure
+
+ This usage can be convenient because many programs' configuration
+ scripts respond to these variables in similar ways.
+
+
+
+ The most commonly used of these environment variables are
+ CC and CFLAGS.
+ If you prefer a C compiler different from the one
+ configure picks, you can set the
+ variable CC to the program of your choice.
+ By default, configure will pick
+ gcc if available, else the platform's
+ default (usually cc). Similarly, you can override the
+ default compiler flags if needed with the CFLAGS variable.
+
+
+
+ Here is a list of the significant variables that can be set in
+ this manner:
+
+
+
+ BISON
+
+
+ Bison program
+
+
+
+
+
+ CC
+
+
+ C compiler
+
+
+
+
+
+ CFLAGS
+
+
+ options to pass to the C compiler
+
+
+
+
+
+ CLANG
+
+
+ path to clang program used to process source code
+ for inlining when compiling with --with-llvm
+
+
+
+
+
+ CPP
+
+
+ C preprocessor
+
+
+
+
+
+ CPPFLAGS
+
+
+ options to pass to the C preprocessor
+
+
+
+
+
+ CXX
+
+
+ C++ compiler
+
+
+
+
+
+ CXXFLAGS
+
+
+ options to pass to the C++ compiler
+
+
+
+
+
+ DTRACE
+
+
+ location of the dtrace program
+
+
+
+
+
+ DTRACEFLAGS
+
+
+ options to pass to the dtrace program
+
+
+
+
+
+ FLEX
+
+
+ Flex program
+
+
+
+
+
+ LDFLAGS
+
+
+ options to use when linking either executables or shared libraries
+
+
+
+
+
+ LDFLAGS_EX
+
+
+ additional options for linking executables only
+
+
+
+
+
+ LDFLAGS_SL
+
+
+ additional options for linking shared libraries only
+
+
+
+
+
+ LLVM_CONFIG
+
+
+ llvm-config program used to locate the
+ LLVM installation
+
+
+
+
+
+ MSGFMT
+
+
+ msgfmt program for native language support
+
+
+
+
+
+ PERL
+
+
+ Perl interpreter program. This will be used to determine the
+ dependencies for building PL/Perl. The default is
+ perl.
+
+
+
+
+
+ PYTHON
+
+
+ Python interpreter program. This will be used to
+ determine the dependencies for building PL/Python. Also,
+ whether Python 2 or 3 is specified here (or otherwise
+ implicitly chosen) determines which variant of the PL/Python
+ language becomes available. See
+
+ for more information. If this is not set, the following are probed
+ in this order: python python3 python2.
+
+
+
+
+
+ TCLSH
+
+
+ Tcl interpreter program. This will be used to
+ determine the dependencies for building PL/Tcl.
+ If this is not set, the following are probed in this
+ order: tclsh tcl tclsh8.6 tclsh86 tclsh8.5 tclsh85
+ tclsh8.4 tclsh84.
+
+
+
+
+
+ XML2_CONFIG
+
+
+ xml2-config program used to locate the
+ libxml installation
+
+
+
+
+
+
+
+ Sometimes it is useful to add compiler flags after-the-fact to the set
+ that were chosen by configure. An important example is
+ that gcc's option cannot be included
+ in the CFLAGS passed to configure, because
+ it will break many of configure's built-in tests. To add
+ such flags, include them in the COPT environment variable
+ while running make. The contents of COPT
+ are added to both the CFLAGS and LDFLAGS
+ options set up by configure. For example, you could do
+
+make COPT='-Werror'
+
+ or
+
+export COPT='-Werror'
+make
+
+
+
+
+
+ If using GCC, it is best to build with an optimization level of
+ at least , because using no optimization
+ () disables some important compiler warnings (such
+ as the use of uninitialized variables). However, non-zero
+ optimization levels can complicate debugging because stepping
+ through compiled code will usually not match up one-to-one with
+ source code lines. If you get confused while trying to debug
+ optimized code, recompile the specific files of interest with
+ . An easy way to do this is by passing an option
+ to make: make PROFILE=-O0 file.o.
+
+
+
+ The COPT and PROFILE environment variables are
+ actually handled identically by the PostgreSQL
+ makefiles. Which to use is a matter of preference, but a common habit
+ among developers is to use PROFILE for one-time flag
+ adjustments, while COPT might be kept set all the time.
+
+
+ Post-Installation Setup
-
+ Shared Libraries