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. Процедура установки #
Конфигурирование
При установке сначала производится настройка дерева сборки для имеющейся системы и выбор нужных параметров. Чтобы создать и настроить каталог сборки, можно начать с команды
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.Сборка
По умолчанию Meson использует инструмент сборки Ninja. Чтобы собрать PostgreSQL из исходного кода с помощью Meson, воспользуйтесь командой
ninja
в каталоге сборки.ninja
Ninja автоматически определит количество процессорных ядер на данном компьютере и в соответствии с этим создаст свои параллельные процессы. Можно переопределить количество используемых параллельных процессов в аргументе командной строки
-j
.Следует отметить, что после начального этапа настройки
ninja
— единственная команда, которую нужно ввести для компиляции. Независимо от того, как изменяется дерево исходного кода (за исключением перемещения его в совершенно новое место), Meson обнаружит изменения и соответствующим образом перегенерирует файлы дляninja
. Это особенно удобно, если имеется несколько каталогов сборки. Часто один из них используется для разработки («отладочная» сборка), а другие — только время от времени (например, сборка «статического анализа»). Любую конфигурацию можно собрать, просто перейдя в соответствующий каталог и запустив Ninja.Если нужно собрать сервер, отличный от ninja, можно использовать указание configure с параметром
--backend
, чтобы выбрать нужный сервер, а затем собрать его, используяmeson compile
. Чтобы узнать больше об этих серверах и других аргументах, которые можно передавать ninja, обратитесь к документации Meson.Если вы хотите протестировать только что собранный сервер, прежде чем устанавливать его, на этом этапе вы можете запустить регрессионные тесты. Регрессионные тесты — это пакет тестов, проверяющих, что PostgreSQL работает на вашем компьютере так, как задумано разработчиками. Введите:
meson test
(Это должен выполнять обычный пользователь, не root.) Как интерпретировать результаты проверки, подробно описывается в Главе 31. Вы можете повторить эту проверку позже в любой момент, выполнив ту же команду.
Чтобы запустить тесты pg_regress и pg_isolation_regress для работающего экземпляра postgres, укажите
--setup running
в качестве аргументаmeson test
.Установка файлов
Примечание
Если вы обновляете существующую систему, обязательно прочитайте инструкции по обновлению кластера, приведённые в Раздел 18.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) или
(в Windows). Собственно файлы будут установлены в различные подкаталоги этого каталога; в самом каталогебуква диска
:/usr/local/pgsqlПРЕФИКС
никакие файлы не размещаются.--bindir=
#КАТАЛОГ
Задаёт каталог для исполняемых двоичных программ. По умолчанию это
.ПРЕФИКС
/bin--sysconfdir=
#КАТАЛОГ
Задаёт каталог для различных файлов конфигурации,
по умолчанию.ПРЕФИКС
/etc--libdir=
#КАТАЛОГ
Задаёт каталог для установки библиотек и динамически загружаемых модулей. Значение по умолчанию —
.ПРЕФИКС
/lib--includedir=
#КАТАЛОГ
Задаёт каталог для установки заголовочных файлов C и C++. Значение по умолчанию —
.ПРЕФИКС
/include--datadir=
#КАТАЛОГ
Задаёт каталог для статических файлов данных, используемых установленными программами. Значение по умолчанию —
. Заметьте, что это совсем не тот каталог, в котором будут размещены файлы базы данных.ПРЕФИКС
/share--localedir=
#КАТАЛОГ
Задаёт каталог для установки данных локализации, в частности, каталогов перевода сообщений. Значение по умолчанию —
.DATADIR
/locale--mandir=
#КАТАЛОГ
Страницы man, поставляемые в составе PostgreSQL, будут установлены в этот каталог, в соответствующие подкаталоги
man
. Значение по умолчанию —x
.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 (см. Раздел 23.2). Для этого должен быть установлен пакет ICU4C. Значение по умолчанию — auto. В настоящее время требуется ICU4C версии не ниже 4.2.
-Dllvm={ auto | enabled | disabled }
#Включает поддержку JIT-компиляции (см. Главу 30) на базе LLVM. Для этого должна быть установлена библиотека LLVM. В настоящее время требуется версия LLVM не ниже 10. По умолчанию поддержка отключена.
Программа
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 для проверки подлинности и получения параметров соединения (за дополнительными сведениями обратитесь к Разделу 32.18 и Разделу 20.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, и не оказывает никакого влияния в противном случае; за дополнительными сведениями обратитесь к Разделу 18.3. Значение по умолчанию — auto. Для использования этой поддержки в системе должна быть установлена libsystemd с сопутствующими заголовочными файлами.
-Dbonjour={ auto | enabled | disabled }
#Включает поддержку Bonjour, протокола автоматического обнаружения служб. Значение по умолчанию — auto. Bonjour должен поддерживаться самой операционной системой. Рекомендуется для macOS.
-Duuid=
#БИБЛИОТЕКА
Собрать модуль uuid-ossp (предоставляющий функции для генерирования UUID), используя заданную библиотеку UUID.
БИБЛИОТЕКА
может быть следующей:Значение
none
отключает сборку модуля uuid. Это значение по умолчанию.bsd
, чтобы использовались функции получения UUID, имеющиеся во FreeBSD и некоторых других системах на базе BSDe2fs
, чтобы использовалась библиотека получения 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.-Dselinux={ auto | enabled | disabled }
#Сборка с поддержкой SElinux, включающая расширение sepgsql. Значение по умолчанию — 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.
-Dc_link_args=
#ПАРАМЕТРЫ
Этот параметр можно использовать для передачи дополнительных параметров компоновщику 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
. За дополнительными сведениями обратитесь к Разделу 31.4.-DPG_TEST_EXTRA=
#ПАКЕТЫ_ТЕСТОВ
Включает пакеты тестов, для запуска которых требуется специальное программное обеспечение. Этот параметр принимает аргументы в виде списка, разделённого пробелами. За подробностями обратитесь к Подразделу 31.1.3.
-Db_coverage={ true | false }
#При использовании GCC все программы и библиотеки компилируются с инструментарием, оценивающим покрытие кода тестами. Если его запустить, в каталоге сборки будут сформированы файлы с метриками покрытия кода. За дополнительными сведениями обратитесь к Разделу 31.5. Этот параметр предназначен только для GCC и только для использования в процессе разработки.
-Ddtrace={ auto | enabled | disabled }
#Включает при компиляции PostgreSQL поддержку средства динамической трассировки DTrace. За дополнительными сведениями обратитесь к Разделу 27.5.
Задать расположение программы
dtrace
можно в переменной окруженияDTRACE
. Часто это необходимо, потому чтоdtrace
обычно устанавливается в каталог/usr/sbin
, который может отсутствовать вPATH
.-Dinjection_points={ true | false }
#Компилирует PostgreSQL с поддержкой точек внедрения на сервере. Точки внедрения позволяют запускать пользовательский код с сервера в заданных местах кода. Это помогает контролируемо тестировать и исследовать сценарии параллельного выполнения. По умолчанию этот параметр отключён. За подробностями обратитесь к Подразделу 36.10.13. Этот параметр предназначен для использования разработчиками при тестировании.
-Dsegsize_blocks=SEGSIZE_BLOCKS
#Указывает размер сегмента отношения в блоках. Если указан и данный параметр, и
-Dsegsize
, применяется данный параметр. Он предназначен только для разработчиков и позволяет тестировать код, связанный с сегментом.
17.4.4. Цели сборки meson
#
Отдельные цели могут строиться с использованием команды ninja
. Если цель не указана, собирается всё, кроме документации. Отдельные продукты могут строиться с указанием пути/имени файла в качестве цель
цели
.
17.4.4.1. Code Targets #
17.4.4.2. Developer Targets #
17.4.4.3. Documentation Targets #
html
#Build documentation in multi-page HTML format
man
#Build documentation in man page format
docs
#Build documentation in multi-page HTML and man page format
doc/src/sgml/postgres-A4.pdf
#Build documentation in PDF format, with A4 pages
doc/src/sgml/postgres-US.pdf
#Build documentation in PDF format, with US letter pages
doc/src/sgml/postgres.html
#Build documentation in single-page HTML format
alldocs
#Build documentation in all supported formats
17.4.4.4. Installation Targets #
install
#Install postgres, excluding documentation
install-docs
#Install documentation in multi-page HTML and man page formats
install-html
#Install documentation in multi-page HTML format
install-man
#Install documentation in man page format
install-quiet
#Like "install", but installed files are not displayed
install-world
#Install postgres, including multi-page HTML and man page documentation
uninstall
#Remove installed files