17.4. Сборка и установка с использованием Meson #

17.4.1. Краткий вариант #

meson setup build --prefix=/usr/local/pgsql
cd build
ninja
su
ninja install
adduser postgres
mkdir -p /usr/local/pgsql/data
chown postgres /usr/local/pgsql/data
su - postgres
/usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data
/usr/local/pgsql/bin/pg_ctl -D /usr/local/pgsql/data -l logfile start
/usr/local/pgsql/bin/createdb test
/usr/local/pgsql/bin/psql test

Развёрнутый вариант представлен в продолжении этого раздела.

17.4.2. Процедура установки #

  1. Конфигурирование

    При установке сначала производится настройка дерева сборки для имеющейся системы и выбор нужных параметров. Чтобы создать и настроить каталог сборки, можно начать с команды meson setup.

    meson setup build
    

    Команда установки принимает аргументы builddir и srcdir. Если srcdir не указан, Meson определит srcdir на основе текущего каталога и местоположения meson.build. Аргумент builddir является обязательным.

    При запуске meson setup загружается файл конфигурации сборки и устанавливается каталог сборки. Кроме того, можно передать Meson несколько параметров сборки. Некоторые часто используемые параметры упомянуты в следующих разделах. Например:

    # сборка с другим префиксом установки
    meson setup build --prefix=/home/user/pg-install
    
    # создание отладочной сборки
    meson setup build --buildtype=debug
    
    # сборка с поддержкой OpenSSL
    meson setup build -Dssl=openssl
    

    Каталог сборки настраивается один раз. Чтобы изменить настройку перед новой сборкой, воспользуйтесь командой meson configure

    meson configure -Dcassert=true
    

    Часто используемые параметры командной строки meson configure описаны в Подразделе 17.4.3.

  2. Сборка

    По умолчанию Meson использует инструмент сборки Ninja. Чтобы собрать PostgreSQL из исходного кода с помощью Meson, воспользуйтесь командой ninja в каталоге сборки.

    ninja
    

    Ninja автоматически определит количество процессорных ядер на данном компьютере и в соответствии с этим создаст свои параллельные процессы. Можно переопределить количество используемых параллельных процессов в аргументе командной строки -j.

    Следует отметить, что после начального этапа настройки ninja — единственная команда, которую нужно ввести для компиляции. Независимо от того, как изменяется дерево исходного кода (за исключением перемещения его в совершенно новое место), Meson обнаружит изменения и соответствующим образом перегенерирует файлы для ninja. Это особенно удобно, если имеется несколько каталогов сборки. Часто один из них используется для разработки («отладочная» сборка), а другие — только время от времени (например, сборка «статического анализа»). Любую конфигурацию можно собрать, просто перейдя в соответствующий каталог и запустив Ninja.

    Если нужно собрать сервер, отличный от ninja, можно использовать указание configure с параметром --backend, чтобы выбрать нужный сервер, а затем собрать его, используя meson compile. Чтобы узнать больше об этих серверах и других аргументах, которые можно передавать ninja, обратитесь к документации Meson.

  3. Регрессионные тесты

    Если вы хотите протестировать только что собранный сервер, прежде чем устанавливать его, на этом этапе вы можете запустить регрессионные тесты. Регрессионные тесты — это комплект тестов, проверяющих, что PostgreSQL работает на вашем компьютере так, как задумано разработчиками. Введите:

    meson test
    

    (Это должен выполнять обычный пользователь, не root.) Как интерпретировать результаты проверки, подробно описывается в Главе 33. Вы можете повторить эту проверку позже в любой момент, выполнив ту же команду.

    Чтобы запустить тесты pg_regress и pg_isolation_regress для работающего экземпляра postgres, укажите --setup running в качестве аргумента meson test.

  4. Установка файлов

    Примечание

    Если вы обновляете существующую систему, обязательно прочитайте инструкции по обновлению кластера, приведённые в Раздел 19.6.

    После сборки PostgreSQL установить её можно, просто выполнив команду ninja install.

    ninja install
    

    При этом файлы будут установлены в каталоги, указанные в Шаг 1. Для записи в них нужны соответствующие права пользователя. Возможно, вам придётся выполнить этот шаг от имени пользователя root. Также можно заранее создать целевые каталоги и дать требуемый доступ к ним. Стандартная установка содержит все заголовочные файлы, необходимые для разработки клиентских приложений и серверных программ, таких как пользовательские функции или типы данных, написанные на C.

    Команда ninja install должна работать в большинстве случаев, но если необходимо использовать больше параметров (например, --quiet для отключения подробного вывода), также можно использовать meson install вместо неё. Подробнее установка meson и допустимые параметры описаны в документации Meson.

Удаление: Чтобы отменить установку, воспользуйтесь командой ninja uninstall.

Очистка: После установки можно освободить место на диске, удалив собранные файлы из дерева исходного кода с помощью команды ninja clean.

17.4.3. Параметры meson setup #

Параметры командной строки meson setup описываются ниже. Этот список не является исчерпывающим (который можно получить, вызвав meson configure --help). Неописанные здесь параметры предназначены для особых случаев и описаны в стандартной документации Meson. Эти аргументы также можно использовать с командой meson setup.

17.4.3.1. Место установки #

Эти параметры определяют, куда ninja install (или meson install) будет устанавливать файлы. В большинстве случае для определения целевого расположения достаточно параметра --prefix (например, Подраздел 17.4.1). Если же у вас есть особые требования, вы можете установить разные целевые подкаталоги, воспользовавшись другими описанными здесь параметрами. Однако имейте в виду, что при изменении относительного расположения разных подкаталогов ваша инсталляция может оказаться неперемещаемой, то есть её нельзя будет перенести в другое место после развёртывания. (Это ограничение не касается расположения подкаталогов man и doc.) Для получения перемещаемой инсталляции может потребоваться параметр -Drpath=false, описанный далее.

--prefix=ПРЕФИКС #

Разместить все файлы внутри каталога ПРЕФИКС, а не в /usr/local/pgsql (в ОС на базе Unix) или буква диска:/usr/local/pgsql (в Windows). Собственно файлы будут установлены в различные подкаталоги этого каталога; в самом каталоге ПРЕФИКС никакие файлы не размещаются.

--bindir=КАТАЛОГ #

Задаёт каталог для исполняемых двоичных программ. По умолчанию это ПРЕФИКС/bin.

--sysconfdir=КАТАЛОГ #

Задаёт каталог для различных файлов конфигурации, ПРЕФИКС/etc по умолчанию.

--libdir=КАТАЛОГ #

Задаёт каталог для установки библиотек и динамически загружаемых модулей. Значение по умолчанию — ПРЕФИКС/lib.

--includedir=КАТАЛОГ #

Задаёт каталог для установки заголовочных файлов C и C++. Значение по умолчанию — ПРЕФИКС/include.

--datadir=КАТАЛОГ #

Задаёт каталог для статических файлов данных, используемых установленными программами. Значение по умолчанию — ПРЕФИКС/share. Заметьте, что это совсем не тот каталог, в котором будут размещены файлы базы данных.

--localedir=КАТАЛОГ #

Задаёт каталог для установки данных локализации, в частности, каталогов перевода сообщений. Значение по умолчанию — DATADIR/locale.

--mandir=КАТАЛОГ #

Страницы man, поставляемые в составе PostgreSQL, будут установлены в этот каталог, в соответствующие подкаталоги manx. Значение по умолчанию — DATADIR/man.

Примечание

Чтобы PostgreSQL можно было установить в стандартные системные размещения (например, в /usr/local/include), не затрагивая пространство имён остальной системы, приняты определённые меры. Во-первых, к путям datadir, sysconfdir и docdir автоматически добавляется строка «/postgresql», если только полный развёрнутый путь каталога уже не содержит строку «postgres» или «pgsql». Так, если вы выберете в качестве префикса /usr/local, документация будет установлена в /usr/local/doc/postgresql, но с префиксом /opt/postgres она будет помещена в /opt/postgres/doc. Внешние заголовочные файлы C для клиентских интерфейсов устанавливаются в includedir, не загрязняя пространство имён. Внутренние и серверные заголовочные файлы устанавливаются в частные подкаталоги внутри includedir. Чтобы узнать, как обращаться к заголовочным файлам того или иного интерфейса, обратитесь к документации этого интерфейса. Наконец, для динамически загружаемых модулей, если требуется, будет также создан частный подкаталог внутри libdir.

17.4.3.2. Функциональность PostgreSQL #

Параметры, описанные в этом разделе, позволяют настраивать возможности PostgreSQL. Для большинства из них требуется дополнительное программное обеспечение, как описано в Раздел 17.1, и они будут автоматически включены, если оно обнаружено. Можно изменить это поведение, вручную установив для этих возможностей значение enabled, чтобы они требовались, или disabled, чтобы не использовать их при сборке.

Чтобы указать параметры, специфичные для PostgreSQL, к имени параметра должен быть добавлен префикс -D.

-Dnls={ auto | enabled | disabled } #

Включает или отключает поддержку родного языка (NLS), то есть возможность отображать сообщения программы на языке, отличном от английского. По умолчанию установлено значение auto, и эта возможность включается автоматически, если найдена реализация Gettext API.

-Dplperl={ auto | enabled | disabled } #

Включает поддержку языка PL/Perl на стороне сервера. Значение по умолчанию — auto.

-Dplpython={ auto | enabled | disabled } #

Включает поддержку языка PL/Python на стороне сервера. Значение по умолчанию — auto.

-Dpltcl={ auto | enabled | disabled } #

Включает поддержку языка PL/Tcl на стороне сервера. Значение по умолчанию — auto.

-Dtcl_version=ВЕРСИЯ_TCL #

Указывает версию Tcl, которая будет использоваться при сборке PL/Tcl.

-Dicu={ auto | enabled | disabled } #

Включает поддержку библиотеки ICU, что позволяет использовать правила сортировки ICU (см. Раздел 24.2). Для этого должен быть установлен пакет ICU4C. Значение по умолчанию — auto. В настоящее время требуется ICU4C версии не ниже 4.2.

-Dllvm={ auto | enabled | disabled } #

Включает поддержку JIT-компиляции (см. Главу 32) на базе LLVM. Для этого должна быть установлена библиотека LLVM. В настоящее время требуется версия LLVM не ниже 3.9. По умолчанию поддержка отключена.

Программа llvm-config будет использоваться для выяснения требуемых параметров компиляции. Поиск её будет выполняться в заданных путях PATH по имени llvm-config, а затем llvm-config-$version для всех поддерживаемых версий. Если нужную программу найти таким образом не удастся, воспользуйтесь переменной LLVM_CONFIG и укажите путь к корректному llvm-config.

-Dlz4={ auto | enabled | disabled } #

Собрать с поддержкой сжатия LZ4. Значение по умолчанию — auto.

-Dzstd={ auto | enabled | disabled } #

Собрать с поддержкой сжатия Zstandard. Значение по умолчанию — auto.

-Dssl={ auto | БИБЛИОТЕКА } #

Включает поддержку соединений SSL (зашифрованных). Единственной поддерживаемой БИБЛИОТЕКОЙ является openssl. Для такой сборки необходимо установить пакет OpenSSL, при этом до начала сборки будет проверено наличие необходимых заголовочных файлов и библиотек, чтобы убедиться в целостности инсталляции OpenSSL. Значение по умолчанию — auto.

-Dgssapi={ auto | enabled | disabled } #

Включает поддержку аутентификации GSSAPI. Для GSSAPI необходимо установить MIT Kerberos. На многих платформах подсистема GSSAPI (обычно входящая в состав MIT Kerberos) устанавливается не в тот каталог, который просматривается по умолчанию (например, /usr/include, /usr/lib). В этих случаях PostgreSQL отправит запрос pkg-config, чтобы определить необходимые параметры компилятора и компоновщика. Значение параметра по умолчанию — auto. Команда meson configure проверит наличие необходимых заголовочных файлов и библиотек, чтобы проверить полноту установки GSSAPI, прежде чем продолжить.

-Dldap={ auto | enabled | disabled } #

Включает поддержку LDAP для проверки подлинности и получения параметров соединения (за дополнительными сведениями обратитесь к Разделу 34.18 и Разделу 21.10). В Unix для этого нужно установить пакет OpenLDAP. В Windows используется стандартная библиотека WinLDAP. Значение по умолчанию — auto. Скрипт meson configure проверит наличие необходимых заголовочных файлов и библиотек, чтобы убедиться в целостности инсталляции OpenLDAP, прежде чем продолжить.

-Dpam={ auto | enabled | disabled } #

Включает поддержку PAM (Pluggable Authentication Modules, подключаемых модулей аутентификации). Значение по умолчанию — auto.

-Dbsd_auth={ auto | enabled | disabled } #

Включает поддержку аутентификации BSD. (Инфраструктура аутентификации BSD в настоящее время доступна только в OpenBSD.) Значение по умолчанию — auto.

-Dsystemd={ auto | enabled | disabled } #

Включает поддержку служебных уведомлений для systemd. Это улучшает интеграцию с системой, когда сервер запускается под управлением systemd, и не оказывает никакого влияния в противном случае; за дополнительными сведениями обратитесь к Разделу 19.3. Значение по умолчанию — auto. Для использования этой поддержки в системе должна быть установлена libsystemd с сопутствующими заголовочными файлами.

-Dbonjour={ auto | enabled | disabled } #

Включает поддержку Bonjour, протокола автоматического обнаружения служб. Значение по умолчанию — auto. Bonjour должен поддерживаться самой операционной системой. Рекомендуется для macOS.

-Duuid=БИБЛИОТЕКА #

Собрать модуль uuid-ossp (предоставляющий функции для генерирования UUID), используя заданную библиотеку UUID. БИБЛИОТЕКА может быть следующей:

  • Значение none отключает сборку модуля uuid. Это значение по умолчанию.

  • bsd, чтобы использовались функции получения UUID, имеющиеся во FreeBSD и некоторых других системах на базе BSD

  • e2fs, чтобы использовалась библиотека получения UUID, созданная в рамках проекта e2fsprogs; эта библиотека присутствует в большинстве систем Linux и macOS, также её можно найти и для других платформ.

  • ossp, чтобы использовалась библиотека OSSP UUID

-Dlibxml={ auto | enabled | disabled } #

Собрать с libxml2, включая тем самым поддержку SQL/XML. Для этого требуется libxml версии 2.6.23 или новее. Значение по умолчанию — auto.

Чтобы использовать инсталляцию libxml2, расположенную в нестандартном месте, можно установить переменные среды, связанные с pkg-config (см. документацию libxml2).

-Dlibxslt={ auto | enabled | disabled } #

Собрать с libxslt, включая тем самым возможность выполнять XSL-преобразования XML-документов в модуле xml2. Для этого также должен быть указан ключ -Dlibxml. Значение по умолчанию — auto.

17.4.3.3. Отключение функциональности #

-Dreadline={ auto | enabled | disabled } #

Разрешает использование библиотеки Readline (а также libedit). Значение параметра по умолчанию — auto, при этом включается редактирование командной строки и история в psql, так что использовать этот вариант настоятельно рекомендуется.

-Dlibedit_preferred={ true | false } #

Со значением true предпочтение отдаётся библиотеке libedit с лицензией BSD, а не Readline (GPL). Этот параметр имеет значение, только если установлены обе библиотеки; по умолчанию установлено значение false, при котором используется Readline.

-Dzlib={ auto | enabled | disabled } #

Запрещает использование библиотеки Zlib. По умолчанию установлено (и рекомендуется использовать) значение auto, оно включает поддержку сжатых архивов в pg_dump, pg_restore и pg_basebackup.

-Dspinlocks={ true | false } #

По умолчанию для этого параметра установлено значение true. Значение false позволяет провести сборку, если PostgreSQL не может воспользоваться циклическими блокировками CPU на данной платформе. Отсутствие таких блокировок приводит к кардинальному снижению производительности, поэтому изменять этот параметр следует, только если сборка прерывается и выдаётся сообщение, что ваша платформа эти блокировки не поддерживает. Если для сборки PostgreSQL на вашей платформе требуется значение false, сообщите о данной проблеме разработчикам PostgreSQL.

-Datomics={ true | false } #

По умолчанию для этого параметра установлено значение true; установка значения false отключает использование атомарных операций процессора. На архитектурах, где такие операции отсутствуют, этот параметр никак не действует. Там же, где они поддерживаются, отказ от их использования приведёт к падению производительности. Изменение этого параметра полезно только для отладки и для сравнительной оценки быстродействия.

17.4.3.4. Особенности процесса сборки #

--auto_features={ auto | enabled | disabled } #

Установка этого параметра позволяет переопределить значение всех возможностей, которые включаются «автоматически», если найдено необходимое программное обеспечение. Это может быть полезно, если нужно отключить или включить все «дополнительные» функции одновременно, без необходимости настраивать каждую из них вручную. Значение по умолчанию для этого параметра — auto.

--backend=СЕРВЕР #

По умолчанию Meson использует систему сборки ninja, и этого должно быть достаточно для большинства случаев использования. Однако если необходимо обеспечить полную интеграцию с Visual Studio, можно установить значение vs.

-Dc_args=ПАРАМЕТРЫ #

Этот параметр можно использовать для передачи дополнительных параметров компилятору C.

Этот параметр можно использовать для передачи дополнительных параметров компоновщику C.

-Dextra_include_dirs=КАТАЛОГИ #

Значение КАТАЛОГИ представляет список каталогов через запятую, которые будут просмотрены компилятором при поиске заголовочных файлов. Если для дополнительных пакетов (например, GNU Readline) используется нестандартный каталог установки, вам придётся использовать этот параметр и, возможно, также добавить соответствующий параметр -Dextra_lib_dirs.

Пример: -Dextra_include_dirs=/opt/gnu/include,/usr/sup/include.

-Dextra_lib_dirs=КАТАЛОГИ #

Значение КАТАЛОГИ представляет список каталогов через запятую, в котором следует искать библиотеки. Возможно, вам потребуется использовать этот параметр (и соответствующий -Dextra_include_dirs), если используются нестандартные каталоги для установки.

Пример: -Dextra_lib_dirs=/opt/gnu/lib,/usr/sup/lib.

-Dsystem_tzdata=КАТАЛОГ #

В PostgreSQL включена собственная база данных часовых поясов, необходимая для операций с датой и временем. На самом деле эта база данных совместима с базой часовых поясов IANA, поставляемой в составе многих операционных систем FreeBSD, Linux, Solaris, поэтому устанавливать её дополнительно может быть излишне. С этим параметром вместо базы данных, включённой в пакет исходного кода PostgreSQL, будет использоваться системная база данных часовых поясов, находящаяся в заданном КАТАЛОГЕ. КАТАЛОГ должен задаваться абсолютным путём (в ряде операционных систем принят путь /usr/share/zoneinfo). Заметьте, что процедура установки не будет проверять несоответствия или ошибки в данных часовых поясов. Поэтому, используя этот параметр, рекомендуется выполнить регрессионные тесты, чтобы убедиться, что выбранная вами база данных часовых поясов работает корректно с PostgreSQL.

Этот параметр в основном предназначен для тех, кто собирает двоичные пакеты для дистрибутивов и хорошо знает свою операционную систему. Основной плюс от использования системных данных в том, что пакет PostgreSQL не придётся обновлять при изменениях местных определений часовых поясов. Ещё один плюс заключается в упрощении кросс-компиляции, так как при инсталляции не требуется собирать базу данных часовых поясов.

-Dextra_version=СТРОКА #

Заданная СТРОКА добавляется к номеру версии PostgreSQL. Это можно использовать, например, чтобы двоичные файлы, собранные из промежуточных снимков Git или кода с дополнительными правками, отличались от стандартных дополнительной строкой в версии, например, содержащей идентификатор git describe или номер выпуска дистрибутивного пакета.

-Drpath={ true | false } #

Значение этого параметра по умолчанию — true. При значении false в исполняемые файлы PostgreSQL не добавляется атрибут, с которым они будут искать разделяемые библиотеки в каталоге библиотек инсталляции (см. --libdir). На большинстве платформ этот атрибут задаёт абсолютный путь к каталогу библиотек, поэтому этот вариант не подходит, если вы намерены перемещать готовую инсталляцию. Однако вам в любом случае нужно каким-то образом указать, где исполняемые файлы могут найти разделяемые библиотеки. Обычно для этого нужно настроить механизм динамического связывания в операционной системе, указав нужный каталог библиотек; за подробностями обратитесь к Подразделу 17.5.1.

-DИМЯ_ИСПОЛНЯЕМОГО_ФАЙЛА=ПУТЬ #

Если программа, необходимая для сборки PostgreSQL (с дополнительными флагами или без них), имеет нестандартный путь установки, можно указать его вручную в этом параметре для meson configure. Полный список программ, для которых поддерживается такой способ, можно найти, запустив meson configure. Пример:

meson configure -DBISON=PATH_TO_BISON

17.4.3.5. Документация #

Чтобы узнать об инструментах, необходимых для сборки документации, обратитесь к Разделу J.2.

-Ddocs={ auto | enabled | disabled } #

Позволяет собирать документацию в форматах HTML и man. По умолчанию установлено значение auto.

-Ddocs_pdf={ auto | enabled | disabled } #

Позволяет собирать документацию в формате PDF. По умолчанию установлено значение auto.

-Ddocs_html_style={ simple | website } #

Определяет, какая таблица стилей CSS используется. По умолчанию используется simple. Если установлено значение website, документация HTML будет ссылаться на таблицу стилей для postgresql.org.

17.4.3.6. Разное #

-Dpgport=НОМЕР #

Задаёт НОМЕР порта по умолчанию для сервера и клиентов. Стандартное значение — 5432. Этот порт всегда можно изменить позже, но если вы укажете другой номер здесь, и сервер, и клиенты будут скомпилированы с одним значением, что очень удобно. Обычно менять это значение имеет смысл, только если вы намерены запускать в одной системе несколько серверов PostgreSQL.

-Dkrb_srvnam=ИМЯ #

Задаёт имя по умолчанию для субъекта-службы Kerberos, используемое GSSAPI (по умолчанию это postgres). Обычно менять его имеет смысл только в сборке для среды Windows, где оно должно быть задано в верхнем регистре (POSTGRES).

-Dsegsize=РАЗМЕР_СЕГМЕНТА #

Задаёт размер сегмента (в гигабайтах). Сервер делит большие таблицы на несколько файлов в файловой системе, ограничивая размер каждого данным размером сегмента. Это позволяет обойти ограничения на размер файлов, существующие на многих платформах. Размер сегмента по умолчанию, 1 гигабайт, безопасен для всех поддерживаемых платформ. Если же ваша операционная система поддерживает «большие файлы» (а сегодня это поддерживают почти все), вы можете установить больший размер сегмента. Это позволит уменьшить число файловых дескрипторов, используемых при работе с очень большими таблицами. Но будьте осторожны, чтобы выбранное значение не превысило максимум, поддерживаемый вашей платформой и файловыми системами, которые вы будете применять. Возможно, допустимый размер файла будет ограничиваться и другими утилитами, которые вы захотите использовать, например tar. Рекомендуется, хотя и не требуется, чтобы это значение было степенью 2.

-Dblocksize=РАЗМЕР_БЛОКА #

Задаёт размер блока (в килобайтах). Эта величина будет единицей хранения и ввода/вывода данных таблиц. Значение по умолчанию, 8 килобайт, достаточно универсально; но в особых случаях может быть оправдан другой размер блока. Это значение должно быть степенью 2 от 1 до 32 (в килобайтах).

-Dwal_blocksize=РАЗМЕР_БЛОКА #

Задаёт размер блока WAL (в килобайтах). Эта величина будет единицей хранения и ввода/вывода в журнале WAL. Значение по умолчанию, 8 килобайт, достаточно универсально; но в особых случаях может быть оправдан другой размер блока. Это значение должно быть степенью 2 от 1 до 64 (в килобайтах).

17.4.3.7. Параметры для разработчиков #

Большинство параметров в этом разделе имеют ценность только для разработки или отладки PostgreSQL. Использовать их в производственных сборках не рекомендуется, кроме, возможно, ключа --debug, позволяющего получить подробную информацию об ошибке, в случае, если вы столкнётесь с проблемой. На платформах, поддерживающих DTrace, также может иметь смысл использовать для производственной сборки -Ddtrace.

При сборке инсталляции, которая будет использоваться для отладки внутреннего кода сервера, рекомендуется как минимум использовать параметры --buildtype=debug и -Dcassert.

--buildtype=ТИП_СБОРКИ #

Этот параметр можно использовать для указания используемого типа сборки; по умолчанию — debugoptimized. Если нужна более тонкая настройка символов отладки и уровней оптимизации, чем предоставляемая этим параметром, можно использовать флаги --debug и --optimization.

Обычно используются следующие типы сборки: plain, debug, debugoptimized и release. Дополнительную информацию о них можно найти в документации Meson.

--debug #

Включает компиляцию всех программ и библиотек с отладочными символами. Это значит, что вы сможете запускать программы в отладчике для анализа проблем. При такой компиляции размер установленных исполняемых файлов значительно увеличивается, а компиляторы, кроме GCC, обычно отключают оптимизацию, что снижает быстродействие. Однако наличие отладочных символов очень полезно при решении возможных проблем любой сложности. В настоящее время рекомендуется использовать этот параметр для производственной среды, только если применяется компилятор GCC. Но если вы занимаетесь разработкой или испытываете бета-версию, его следует использовать всегда.

--optimization=УРОВЕНЬ #

Указывает уровень оптимизации. Для LEVEL можно установить любое из значений {0,g,1,2,3,s}.

--werror #

Указывает компилятору рассматривать предупреждения как ошибки, что может быть полезно для разработки кода.

-Dcassert={ true | false } #

Включает для сервера проверочные утверждения, проверяющие множество условий, которые «не должны происходить». Это бесценно в процессе разработки кода, но эти проверки значительно замедляют работу сервера. Кроме того, включение этих проверок не обязательно увеличит стабильность вашего сервера! Проверочные утверждения не категоризируются по важности, поэтому относительно безвредная ошибка может привести к перезапуску сервера, если утверждение не выполнится. Применять это следует, только если вы занимаетесь разработкой или испытываете бета-версию, но не в производственной среде.

-Dtap_tests={ auto | enabled | disabled } #

Включает тесты по технологии Perl TAP. Значение по умолчанию — auto. Для работы тестов у вас должен быть установлен Perl и модуль IPC::Run. За дополнительными сведениями обратитесь к Разделу 33.4.

-DPG_TEST_EXTRA=КОМПЛЕКТЫ_ТЕСТОВ #

Включает комплекты тестов, для запуска которых требуется специальное программное обеспечение. Этот параметр принимает аргументы в виде списка, разделённого пробелами. За подробностями обратитесь к Подразделу 33.1.3.

-Db_coverage={ true | false } #

При использовании GCC все программы и библиотеки компилируются с инструментарием, оценивающим покрытие кода тестами. Если его запустить, в каталоге сборки будут сформированы файлы с метриками покрытия кода. За дополнительными сведениями обратитесь к Разделу 33.5. Этот параметр предназначен только для GCC и только для использования в процессе разработки.

-Ddtrace={ auto | enabled | disabled } #

Включает при компиляции PostgreSQL поддержку средства динамической трассировки DTrace. За дополнительными сведениями обратитесь к Разделу 28.5.

Задать расположение программы dtrace можно в переменной окружения DTRACE. Часто это необходимо, потому что dtrace обычно устанавливается в каталог /usr/sbin, который может отсутствовать в PATH.

-Dsegsize_blocks=SEGSIZE_BLOCKS #

Указывает размер сегмента отношения в блоках. Если указан и данный параметр, и -Dsegsize, применяется данный параметр. Он предназначен только для разработчиков и позволяет тестировать код, связанный с сегментом.