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

  1. Настройки

    Первый шаг процедуры установки заключается в настройке дерева исходных текстов для вашей системы и выбора необходимых вам опций. Всё это выполняется путем запуска сценария configure. Для установки по умолчанию, просто введите

    ./configure

    Данный сценарий запустит несколько тестов для получения необходимых значаний разных переменных, которые зависят от системы и определит некоторые особенности вашей операционной системы, а также в заключении создаст несколько файлов в дереве каталогов, где будет происходить сборка, куда запишет найденные им значения. (Вы также можете запустить configure в каталоге снаружи дерева с исходными текстами, если вы хотите указать каталог для сборки отдельно.)

    Настройки по умолчанию позволят вам построить сервер и утилиты, а также все клиентские приложения и интерфейсы, которые требуют только наличия компилятора языка C. Все эти файлы будут установлены по умолчанию в каталог /usr/local/pgsql.

    Вы можете настроить под себя процессы сборки и установки, путем добавления к configure одной или нескольких опций командой строки из данных ниже:

    --prefix=ПРЕФИКС

    Устанавливать все файлы в каталог ПРЕФИКС вместо /usr/local/pgsql. Фактически, файлы будут установлены в несколько подкаталогов указанного каталога; ни один из файлов не будет установлен непосредственно в каталог ПРЕФИКС.

    Если вам нужно, то с помощью следующих опций, вы также можете подстроить под себя и отдельные подкаталоги. Однако, если вы оставите настройки по умолчанию, установка будет перемещаемой. Это означает, что вы можете перемещать каталоги после установки. (За исключением местоположения каталогов man и doc).

    Для перемещаемых установок, вы можете захотеть использовать опцию configure's --disable-rpath. Также, вам понадобится сказать операционной системе как искать динамические библиотеки.

    --exec-prefix=EXEC-ПРЕФИКС

    Вы можете установить файлы, которые не зависят от архитектуры машины в другой каталог, указываемый в EXEC-PREFIX, вместо каталога ПРЕФИКС. Это может быть полезно для организации общего ресурса независимых от архитектуры файлов между несколькими компьютерами. Если вы опустите данную опцию, то EXEC-ПРЕФИКС будет таким же как и PREFIX, а архитектурно-зависимые и архитектурно-независимые файлы будут установлены в одно и то же дерево каталогов, что возможно вам и нужно.

    --bindir=КАТАЛОГ

    Устанавливает каталог для исполняемых программ. По умолчанию имя каталога формируется как EXEC-ПРЕФИКС/bin, что в обычном случае означает /usr/local/pgsql/bin.

    --datadir=КАТАЛОГ

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

    --sysconfdir=КАТАЛОГ

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

    --libdir=КАТАЛОГ

    В этот каталог будут устанвлены библиотеки и динамически загружаемые модули. По умолчанию это каталог EXEC-ПРЕФИКС/lib.

    --includedir=КАТАЛОГ

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

    --mandir=КАТАЛОГ

    В этот каталог будут установлены страницы электронного руководства man, которые идут с PostgreSQL, в соответствующих подкаталогах manx. По умолчанию это каталог ПРЕФИКС/man.

    --docdir=КАТАЛОГ
    --without-docdir

    Здесь будут хранится файлы с документацией, за исключением страниц электронного руководства "man". По умолчанию это каталог ПРЕФИКС/doc. Если указана опция --without-docdir, то при выполнении make install документация установлена не будет. Эта опция задумывалась в помощь скриптам сборки пакетов, у которых могут быть свои собственные методы установки документации.

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

    --with-includes=КАТАЛОГИ

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

    Пример: --with-includes=/opt/gnu/include:/usr/sup/include.

    --with-libraries=DIRECTORIES

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

    Пример: --with-libraries=/opt/gnu/lib:/usr/sup/lib.

    --enable-nls[=ЯЗЫКИ]

    Разрешить Native Language Support (NLS), что позволит отображать програмам сообщения на языках, отличных от английского. ЯЗЫКИ - это список из разделённых пробелами кодов языков, поддержку которых вы хотите включить, например --enable-nls='de fr'. (Будет автоматически включена поддержка тех языков, которые вы заказали в списке, если они также есть в списке имеющихся в налии переводов). Если вы не задали список, то будут установлены все имеющиеся переводы.

    Для того, чтобы использовать эту опцию, вам необходима какая-либо реализация Gettext API; см. выше.

    --with-pgport=НОМЕР

    Установить НОМЕР порта по умолчанию для сервера и клиентов. Обычно номер порта равен 5432 и его всегда можно изменить позже, но если вы зададите его здесь, то и клиенты и сервер будут скомпилированы с одинаковыми настройками порта по умолчанию, что может оказаться удобным. Хорошо назначить значение отличное от умолчания, если вы используете несколько PostgreSQL серверов на одной машине.

    --with-perl

    Собрать внутренний язык сервера PL/Perl.

    --with-python

    Собрать серверный язык PL/Python.

    --with-tcl

    Собрать серверный язык PL/Tcl.

    --with-tclconfig=КАТАЛОГ

    Tcl устанавливает файл tclConfig.sh, который содержат информацию о настройках необходимую для сборки интерфейсных модулей к Tcl. Если этот файл находятся в известном каталоге, то он обычно находятся автоматически, но если вы хотите использовать другую версию Tcl, то вы можете задать каталог, где можно найти этот файл.

    --with-krb5

    Собрать поддержку авторизации по протоколу Kerberos версии 5. Во многих системах, Kerberos не устанавливается в каталог, где утилиты сборки производят поиск по умолчанию (например, т.е. в /usr/include, /usr/lib), так что вы должны использовать опции --with-includes и --with-libraries в дополнении к текущей опции. Перед сборкой, configure проверит наличие необходимых заголовочных файлов и библиотек, чтобы убедиться, что Kerberos установлен правильно.

    --with-krb-srvnam=ИМЯ

    Имя главной службы Kerberos по умолчанию. По умолчанию postgres. Практически нет причины, по которой его нужно менять.

    --with-openssl

    Собрать поддержку SSL (шифрованных) соединений. Данная опция требует, чтобы был установлен пакет OpenSSL. Перед сборкой, configure проверит наличие необходимых заголовочных файлов и библиотек, чтобы убедиться, что OpenSSL установлен правильно.

    --with-pam

    Собрать поддержку PAM (Pluggable Authentication Modules).

    --with-ldap

    Включает поддержку LDAP для авторизации. На Unix, для этого требуется установленный пакет OpenLDAP. configure перед тем как разрешить эту поддержку, проверит наличие необходимых заголовочных файлов и библиотек, чтобы убедится в правильной установке OpenLDAP. На Windows, по умолчанию используется библиотека WinLDAP.

    --with-libedit-preferred

    Включает предпочтительное использование библиотеки libedit, распространяющейся под лицензией BSD, вместо библиотеки Readline, распространяющейся под лицензией GPL.

    --without-readline

    Предотвращает сборку с использованием библиотеки Readline. Эта опция приведет к невозможности редактирования командной строки и использования истории команд в psql, и таким образом, не рекомендуется.

    --with-bonjour

    Собрать поддерджку Bonjour. Это потребует наличия поддержки Bonjour в вашей операционной системе. Рекомендуется для Mac OS X.

    --enable-integer-datetimes

    Использовать 64-битное целое для хранения значений даты, времени и интервалов, вместо использования чисел с плавающей запятой по умолчанию. Это понижает диапазон значений, которые могут быть представлены, но гарантирует точность в пределах микросекунды для всего диапазона (подробности см. в Section 8.5). Заметим также, что код для работы с целыми числами для типов даты/времени является более новым, чем код с плавающей запятой и может оказаться, что время от времени в нём будут находить ошибки.

    --disable-spinlocks

    Разрешить успешную сборку даже если PostgreSQL не имеет поддежки CPU spinlock для текущей платформы. При отсутствии поддержки spinlock проивзодительность будет низкая; таким образом, данная опция должна использоваться только если сборка аварийно завершается с сообщением о том, что текущая платформа не поддерживает spinlock. Если эта опция требуется для сборки PostgreSQL на вашей платформе, пожалуйста, сообщите об этой проблеме разработчикам PostgreSQL.

    --enable-thread-safety

    Собирать клиентские библиотеки с thread-safe. Эта опция разрешает конкурентные нити(треды) в libpq и ECPG для безопасного управления их собственными дескрипторами соединений. Данная опция требует адекватной поддержки нитей в вашей операционной системе.

    --without-zlib

    Предотвращает сборку с использованием библиотеки Zlib. Это приведет к отсутствию поддержки компрессии в pg_dump и pg_restore. Данная опция была заложена только для тех систем, где нет возможности использовать эту библиотеку.

    --enable-debug

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

    --enable-cassert

    Разрещает assertion проверки в сервере, которые проверяют множество вещей, которые в принципе "не могут произойти". Это неоценимо для целей разработки кода, но такие проверки замедляют работу. Также, наличие этих проверок не является необходимым для увеличения стабильности вашего сервера. Assertion проверки не категоризируются по уровням важности и таким образом может случиться так, что относительно безобидный баг будет приводить к перезапускам севрера, если он был обнаружен при проверке. В настоящий момент, данная опция не рекомендуется для продуктивного использования, но вы должны включить её, если вы разрабатываете новую версию или работаете на бета версии.

    --enable-depend

    Разрешает автоматическое отслеживание зависимостей. С этой опцией файлы makefile устанавливаются так, что все указанные в них объектные файлы будут пересобраны, если изменится любой из заголовочных файлов. Это полезно, если вы разработчик, но если вы компилируете только один раз для установки, то использование этой опции приведет только к напрасной потере времени. Данная опция работает только, если вы используете GCC.

    --enable-dtrace

    Компилировать с поддержкой инструмента динамической трассировки DTrace. Поддержка для DTrace в настоящий момент доступна только в операционной системе Solaris.

    Если ваш любимый компилятор C имеет название отличное от тех, что указаны внутри сценария configure, то вы должны установить переменную окружения CC, чтобы сценарий знал о вашем выборе. По умолчанию, configure будет искать gcc, если он доступен. В противном случае будет искать компилятор по умолчанию для данной платформы (обычно cc). Таким же образом, используя переменную CFLAGS вы можете перекрыть флаги компиляции, заданные по умолчанию.

    Вы можете задать переменные окружения в командной строке, в которой осуществляете запуск configure, например:

    ./configure CC=/opt/bin/gcc CFLAGS='-O2 -pipe'

    Здесь дан список значимых переменных окружения:

    AWK=/path/to/awk

    /path/to/awk — это полный путь к awk.

    CC=/path/to/cc

    /path/to/cc — это полный путь к компилятору C, такому как, например, gcc.

    CFLAGS=FLAGS/

    FLAGS — это полный список флагов, которые передаются компилятору C.

    COLLATEINDEX

    Используется для построения документации в формате SGML.

    CPP=/path/to/cpp

    /path/to/cpp — это полный путь к препроцессору языка C, такому как gcc.

    CPPFLAGS=FLAGS

    FLAGS — это список флагов, которые передаются препроцессору языка C.

    DOCKBOOKSTYLE

    Используется для построения документации в формате SGML.

    JADE

    Используется для построения документации в формате SGML.

    LDFLAGS=FLAGS

    FLAGS — это список флагов, которые передаются компоновщику (редактору связей).

    LDFLAGS_SL

    Используется для компоновки (связывания) разделяемой библиотеки.

    LORDER=/path/to/lorder

    /path/to/lorder — это полный путь к программе, показывающей список зависимостей.

    MSGFMT

    Используется для NLS.

    MSGMERGE

    Используется для NLS.

    NSGMLS

    Используется для построения документации в формате SGML.

    PERL=/path/to/perl

    /path/to/perl — это полный путь к интерпретатору Perl 5. Заметим, что он будет использован для определения зависимостей при компиляции PL/Perl.

    PTHREAD_CC

    Используется для добавления флагов для тредов (нитей).

    PYTHON=/path/to/python

    /path/to/python — это полный путь к интерпретатору Python. Заметим, что он будет использован для определения зависимостей при компиляции PL/Python.

    RANLIB=/path/to/ranlib

    /path/to/ranlib — это полный путь к редактору архивных библиотек.

    SGMLSPL

    Используется для построения документации в формате SGML.

    STRIP=/path/to/strip

    /path/to/strip — это полный путь к программе strip.

    TCL=/path/to/tcl

    /path/to/python — это полный путь к интерпретатору TCL. Заметим, что он будет использован для определения зависимостей при компиляции PL/TCL.

    TAR=/path/to/tar

    /path/to/tar — это полный путь к программе tar.

    TCLISH=/path/to/tclish

    /path/to/tclish — это полный путь к программе tclish.

    XGETTEXT=/path/to/xgettext

    /path/to/xgettext — это полный путь к программе xgettext.

    YACC=/path/to/yacc

    /path/to/yacc — это полный путь к программе yacc.

  2. Сборка

    Для начала сборки, введите

    gmake

    (Помните, что нужно использовать GNU make.) Сборка может происходить от 5 минут до получаса в зависимости от производительности вашей машины. Последняя строка, которую вы должны получить по завершению сборки выглядит так

    All of PostgreSQL is successfully made. Ready to install.
    (Сборка PostgreSQL успешно выполнена. Готово к установке.)

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

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

    gmake check

    (Команда не работает от пользователя root; выполняйте её от обычного пользователя.) Возможно, что некоторые тесты отработают неудачно, что будет видно по сообщениям об ошибках или результатам в виде чисел с плавающей точкой. Chapter 27 содержат детальную информацию о том как интерпретировать результаты тестов. Вы можете повторить какой-либо тест позднее, в любое время, выполнив ту же самую команду.

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

    Note: Если вы обновляете существующиую систему и хотите установить новые файлы поверх старых, то вы должны убедиться в наличии резервной копии ваших данных и затем остановить старый сервер, как описано выше в Section 14.4.

    Для установки PostgreSQL введите

    gmake install

    Будет проведена установка файлов в каталоги, которые вы задали в step 1. Убедитесь, что у вас есть соответствующие права для записи в эти каталоги. Обычно, вам нужно выполнить данный шаг с правами суперпользователя root. Однако, вы можете создать необходимые вам каталоги отдельно и предоставить на них соответствующие права доступа.

    Вы можете использовать gmake install-strip вместо gmake install чтобы убрать ненужные данные из исполняемых файлов и библиотек во время установки. Это сохранит вам некоторое пространство на диске. Если вы производили сборку с поддержкой отладки, то выполнение этой команды приведет и к удалению поддежрки отладки, так что эта операция должна выполняться только если поддержка отладки вам больше не нужна. install-strip пытается выполнить работу по сохранению места на диске, но не имеет знаний о том как убрать каждый ненужный байт из исполняемого файла, так что если вы хотите сохранить всё место на диске, которое только возможно, то вы должны выполнить необходимую работу вручную.

    Стандартная установка предоставляет все заголовочные файлы, необходимые для разработки клиентских приложений а также разработки программ, работающих на стороне сервера, таких как пользовательские функции или типы данных, написанные на C. (До версии PostgreSQL 8.0, далее была необходима отдельная команда gmake install-all-headers, но этот шаг был перемещён в стандартную установку).

    Устновка только клиента: Если вы хотите установить только клиентские приложения и библиотеки интерфейсов, то вы можете использовать эти команды:

    gmake -C src/bin install
    gmake -C src/include install
    gmake -C src/interfaces install
    gmake -C doc install

Регистрация eventlog в Windows: Чтобы зарегистрировать бибилиотеку Windows eventlog в этой операционной системе, используйте после установки команду:

regsvr32 pgsql_library_directory/pgevent.dll

Она создаёт в реестре записи, которые используются программой просмотра событий (Event Viewer).

Откат установки: Чтобы произвести откат установки, используйте команду gmake uninstall. Однако, эта команда не удаляет любые созданные каталоги.

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

Если вы выполняете сборку и затем обнаруживаете, что опции, которые вы задали программе configure являются неправильными или если вы меняете что-либо, о чем программа configure должна знать (например, обновляете программное обеспечение), то хорошей идеей является выполнение gmake distclean перед переконфигурированием и пересборкой. Без этих действий, ваши изменения в настройках могут и не произойти.