Страница 1 из 1

Установка PostgreSQL

Добавлено: 08 дек 2010, 12:19
Raven
В этой статье описана процедура подготовки, установки и настройки PostgreSQL. По умолчанию многие возможности PostgreSQL не задействуются. Например, поддержку языка TCL приходится специально активизировать на стадии компиляции. Существует множество других возможностей, отключенных по умолчанию, поэтому мы рассмотрим различные флаги и ключи для их активизации во время компиляции PostgreSQL. Обязательно прочитайте описание перед тем, как начинать установку.

В этой статье рассматривается процедура установки PostgreSQL на платформах Linux/Unix. Хотя приведенное описание относится к Linux, инструкции подходят и для большинства современных платформ Unix.

Подготовка к установке

Установка PostgreSQL не сложна. Тем не менее успешная компиляция PostgreSQL возможна лишь при соблюдении ряда требований к программной среде. Все требования (кроме наличия исходных текстов PostgreSQL) относятся к инструментарию GNU. Если вы работаете в системе Linux, вполне возможно, что этот инструментарий уже установлен. В системах, производных от BSD (таких, как FreeBSD или MacOS X), необходимые средства загружаются из Интернета.

Если окажется, что какие-либо из перечисленных компонентов отсутствуют в системе, сначала поищите пакеты на web-сайте поставщика системы. Кроме того, инструментарий GNU можно загрузить с сайта http://www.gnu.org. Объем свободного места в файловой системе, используемой для установки, должен быть достаточным для распаковки и компиляции исходных текстов (требования изложены в подразделе «Дисковое пространство» этого раздела).

Обязательные пакеты

Скорее всего, ваша операционная система уже содержит все (или почти все) обязательные программные пакеты. Ниже приведен полный список.

GNU make

В GNU-системах (таких, как Linux) используется имя make, а в других системах утилита обычно известна под именем gmake. Для удобства в книге будет использоваться имя gmake.

При компиляции PostgreSQL рекомендуется использовать gmake версии 3.76.1 и выше. Номер версии gmake проверяется командой:

Проверка версии GNU make

Код: Выделить всё

$ gmake --version 

GNU Make version 3.79.1, by Richard Stallman and Roland McGrath. 

Built for i386-redhat-linux-gnu 

Copyright (C) 1988. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99, 2000 

Free Software Foundation. Inc. 

This is free software; see the source for copying conditions. There is NO warranty: not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 
 
Компилятор С стандарта ISO/ANSI

Существует множество компиляторов С, соответствующих стандарту ISO/ANSI. Для компиляции PostgreSQL рекомендуется использовать компилятор GCC (GNU С Compiler), хотя PostgreSQL также может успешно компилироваться продуктами других разработчиков. На момент написания книги наибольшее распространение получили компиляторы версий 2.95 и 2.96 (Red Hat Linux 7.x и Mandrake Linux 8.x).

Номер версии GCC проверяется командой:

Проверка версии GCC

Код: Выделить всё

$ gcc --version 

2.95.3 
Утилиты GNU zip и tar

Утилита GNU zip (также называемая gzip) предназначена для сжатия и восстановления файлов. Сжатым файлам, созданным утилитой gzip, присваивается расширение .gz. Проверка наличия и версии программы gzip производится командой gzip --version.

В дополнение к gzip вам также понадобится утилита tar, предназначенная для слияния файлов и каталогов в один архив и последующей распаковки архивов в файловой системе. Архивированный файл, созданный утилитой tar, обычно снабжается расширением .tar. Файлы, сжатые утилитой gzip и архивированные утилитой tar, обычно имеют составное расширение .tar.gz. Именно так выглядят архивные файлы из комплекта поставки PostgreSQL. Номера версий gzip и tar проверяются следующей командой:

Проверка версии gzip и tar

Код: Выделить всё

$ gzip --version 

gzip 1.3 

(1999-12-21) 

Copyright 1999 Free Software Foundation 

Copyright 1992-1993 Jean-Loup Gailly 

This program cones with ABSOLUTELY NO WARRANTY. 

You may redistribute copies of this program 

under the terms of the GNU General Public License. 

For more information about these matters, see the file named COPYING. 

Compilation options: 

DIRENT UTIME STOC_HEADERS HAVE_UNISTD_H HAVE_MEMORY_H HAVE_STRING_H 

Writter by Jean-Loup Gailly. 

Код: Выделить всё

$ tar --version 

tan (GNU tar) 1.13.17 

Copytight 2000 Free Software Foundation. Inc. 

This program cones with NO WARRANT, to the extent permitted by law. 

You may redistribute it under the terms of the GNU General Public License: 

see the file named COPYING for details 

Written by John Gilmore and jay Fenlason. 
Дополнительные пакеты

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

Библиотека GNU Readline. Библиотека GNU Headline значительно расширяет возможности psql, стандартного клиента PostgreSQL режима командной строки. В режиме командной строки psql появляется поддержка всех стандартных ' возможностей библиотеки GNU Readline, в том числе удобные средства чтения и редактирования ранее введенных команд при помощи клавиш управления курсором, а также поиск в журнале команд. Если библиотека Readline уже установлена в системе, ее поддержка включается автоматически в процессе конфигурирования.
ПРИМЕЧАНИЕ

В NetBSD этот пакет не нужен, поскольку в NetBSD имеется библиотека libedit, совместимая с Readline.

OpenSSL. OpenSSL представляет собой реализацию протоколов SSL/TLS с открытыми исходными текстами. Пакет обычно работает в сочетании с такими утилитами, как OpenSSH и Apache-SSL. В PostgreSQL он используется для шифрования обмена данными между клиентским приложением psql и рабочими модулями PostgreSQL. Кроме того, OpenSSL может понадобиться в том случае, если вы собираетесь использовать Stunnel.

Td/Tk. Комбинация языка программирования с графическим инструментарием. Хотя работа с Tel с PostgreSQL не описывается, мы рассмотрим приложение PgAccess, написанное на Tel. Ели вы собираетесь использовать PgAccess, вам придется установить Tcl/Tk. Пакет JDK (Java Development Kit) используется для программирования на Java и позволяет включить в PostgreSQL поддержку JDBC. Кроме того, для поддержки JDBC необходима Java-утилита Ant, отдаленный аналог gmake.

Дисковое пространство

PostgreSQL не очень интенсивно использует дисковые ресурсы. На фоне таких продуктов, как Oracle, запросы PostgreSQL выглядят более чем умеренно. Тем не менее PostgreSQL является системой управления базами данных, и при продолжительном использовании PostgreSQL затраты дискового пространства растут.

На среднем компьютере с системой Linux понадобится примерно 50 Мбайт на распаковку исходных текстов и еще 60 Мбайт на их компиляцию. Выполнение регрессионных тестов потребует еще 30 Мбайт. В зависимости от выбранных параметров конфигурации после установки PostgreSQL расходует от 8 до 15 Мбайт дискового пространства.

ПРИМЕЧАНИЕ

Помните, что по мере использования PostgreSQL затраты дискового пространства растут! Заранее позаботьтесь о наличии свободного места для хранимых данных.

Нехватка дискового пространства при установке PostgreSQL сопряжена с потенциальным риском. Прежде чем устанавливать PostgreSQL, проверьте файловую систему и убедитесь в наличии свободного места в том разделе, в котором собираетесь устанавливать систему (например, /usr/local). В GNU-системах для этой цели можно воспользоваться командой df. Ниже приведен пример. Свободное место на диске измеряется в блоках объемом 1 Кбайт.

Проверка свободного места на диске

Код: Выделить всё

$ df -k 

Filesystem Ik-blocks Used Available UseX Mounted on 

/dev/hdal 2355984 932660 1303644 42% I 

/dev/hdbl 4142800 2133160 1799192 54* /home 

/dev/hda6 1541680 272540 1190828 19* /usr/local

Разелим установку базы данных PostgreSQL на 10 условных этапов.

Вы также можете посетить web-сайт PostgreSQL и проверить, не появилась ли более новая версия. Исходные тексты PostgreSQL размещены на многих ftp-сайтах.

postgresq\-base-[eepcux].tar.gz. Минимальный набор исходных текстов, необходимых для построения и запуска PostgreSQL.
postgresql-docs-[oepcH#].tar.gz. Документация PostgreSQL в формате HTML. Учтите, что многие man-страницы PostgreSQL автоматически устанавливаются с пакетом base.
postgresql-opt-[cepcM^].tar.gz. Дополнительные расширения PostgreSQL, в том числе интерфейсы для C++ (libpq++),JDBC, ODBC, Perl, Python и Tel. Пакет также содержит исходный код, обеспечивающий поддержку расширенной кодировки символов.
postgresql-test-[eepcw#].tar.gz. Комплекс регрессионных тестов. Пакет необходим для проведения регрессионных тестов после компиляции PostgreSQL.

Итак поехали:

Этап 1. Создание пользователя postgres

Создайте в Unix учетную запись пользователя, которому будет принадлежать право владения и администрирования файлами баз данных PostgreSQL. Обычно этому пользователю назначается имя «postgres», но вы можете выбрать любое имя по своему усмотрению. В примерах, приведенных в книге, предполагается, что пользователь postgres обладает правами суперпользователя для PostgreSQL.

Для создания суперпользователя PostgreSQL необходимо обладать правами root. В системе Linux пользователь postgres создается командой:

Создание пользователя postgres

Код: Выделить всё

$ su - -с "useradd postgres" 
ВНИМАНИЕ

Не пытайтесь использовать учетную запись root в качестве суперпользователя PostgreSQL, поскольку при этом открывается заметная брешь в системе безопасности.

Этап 2. Установка пакета исходных текстов PostgreSQL

После получения исходных текстов PostgreSQL скопируйте пакет во временный каталог, из которого будет производиться компиляция и настройка PostgreSQL. Распакуйте файл архива с расширением .tar.gz и переходите к установке.

Учтите, что этот каталог не будет использоваться для хранения файлов базы данных после установки, это лишь временное хранилище для настройки и компиляции исходного пакета. Если пакет PostgreSQL был загружен из Интернета, скорее всего, его не окажется в каталоге компиляции (если не сохранить его там специально). Обычно для построения программ в системах Linux/Unix используется каталог /usr/local/src. Вероятно, для обращения к этому каталогу вам понадобятся права root. По этой причине в остальных примерах этой главы, если не оговорено обратное, подразумеваются права root.

ВНИМАНИЕ

Если вы работаете в коммерческой поставке Linux, мы настоятельно рекомендуем проверить, не был ли пакет PostgreSQL установлен по умолчанию. В RPM-системах (например, SuSe, Mandrake и Red Hat) для этого можно воспользоваться командой

Код: Выделить всё

rpm -qa | grep -i postgres.
Если пакет PostgreSQL установлен, не исключено, что он уже устарел. В этом случае следует загрузить и установить обновленную версию PostgreSQL. В процессе установки PostgreSQL под управлением RPM некоторые сценарии и программы (такие, как postmaster и psql) иногда копируются в общедоступные каталоги. Это может стать причиной конфликтов с версиями, откомпилированными из исходных текстов, поэтому перед установкой новой версии обязательно удалите старый пакет командой

Код: Выделить всё

rpm -e <имя_пакета>
.

Чтобы распаковать исходные тексты PostgreSQL в системе Linux, сначала переместите или скопируйте с компакт-диска сжатый файл в каталог /usr/local/src (многие пользователи перемещают исходные тексты в этот каталог, чтобы отделить их от своего домашнего каталога и/или других каталогов, в которых могут храниться загруженные файлы). Когда файл окажется в нужном каталоге файловой системы, распакуйте его утилитой tar. Команды для выполнения этих операций:

Распаковка исходных текстов PostgreSQL

Код: Выделить всё

[root@host root]# cp postgresql-7.1.3.tar.gz /usr/local/src 

[root@host root]# cd /usr/local/src 

[root@host src]# tar -xzvf postgresql-7.1.3.tar.gz 

postgresql-7.1.3/ 

postgresql-7.1.3/ChangeLogs/ 

postgresql-7.1.3/ChangeLogs/ChangeLog-7.1-7.1.1 

postgresql-7.1.3/ChangeLogs/ChangeLog-7.lRCl-to-7.1RC2 

postgresql-7.1.3/ChangeLogs/ChangeLog-7.lRC2-to-7.1RC3 

postgresql-7.1.3/ChangeLogs/ChangeLog-7.lRC3-to-7.Irc4 

postgresql-7.1.3/ChangeLogs/ChangeLog-7.lbetal-to-7.Ibeta3 

postgresql-7.1.3/ChangeLogs/ChangeLog-7.lbeta3-to-7.Ibeta4 

postgresql -7.1.3/ChangeLogs/ChangeLog-7.lbeta4-to-7.IbetaS 

postgresql-7.1.3/ChangeLogs/ChangeLog-7.lbeta5-to-7.Ibeta6 

postgresql-7.1.3/ChangeLogs/ChangeLog-7.lbeta6-7.1RC1 

postgresql-7.1.3/ChangeLogs/ChangeLog-7.Irc4-7.1 

postgresql -7.1.3/ChangeLogs/ChangeLog-7.1.1-7.1.2 

postgresql-7.1.3/ChangeLogs/ChangeLog-7.1.2-7.1.3 

postgresql-7.1.3/Copyright 

[...] 

[root@host root]# chown -R postgres.postgres postgresql-7.1.3 
Обратите внимание на последнюю команду в листинге 2.6:

Код: Выделить всё

chown -R postgres.postgres postgresql-7.1.3 
Команда назначает владельцем иерархии исходных текстов PostgreSQL пользователя postgres, поэтому компиляция PostgreSQL должна осуществляться пользователем postgres. Если после распаковки архива и смены владельца вы откомпилируете PostgreSQL как пользователь postgres, то этот пользователь автоматически станет владельцем всех откомпилированных файлов.

Ниже перечислены флаги утилиты tar, используемые при распаковке архива исходных текстов PostgreSQL.
  • х (eXtract). Утилита tar распаковывает файл с переданным именем (вместо того, чтобы создавать новый архив).
  • v (Verbose). Утилита tar выводит расширенную информацию в процессе распаковки.
  • z (Zipped). Исходный файл распаковывается утилитой gunzip. Флаг существует в GNU-версии; другие версии tar могут не поддерживать его. Если вы не используете инструментарий GNU, перед распаковкой пакета утилитой tar вам придется вручную восстановить сжатые файлы утилитой gunzip.
  • f (File). Имя файла, распаковываемого утилитой tar, указывается после параметра f. В приведенном примере используется файл с именем postgres-7.1.3.tar.gz.
После распаковки файлов войдите в систему под именем postgres и перейдите в созданный каталог (например, /usr/local/src/postgres-7.1.3). Остальные этапы установки будут выполняться в этом каталоге.

Этап 3. Настройка конфигурации

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

Сценарий configure также осуществляет проверку связей, необходимых для компиляции PostgreSQL. В процессе проверки связей сценарий автоматически создает файлы, необходимые для работы gmake.

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

Код: Выделить всё

. /configure - - help.


Скорее всего, используемая по умолчанию конфигурация будет отличаться от той, которая нужна вам. Для нормальной установки PostgreSQL рекомендуется задать по крайней мере следующие ключи:
  • --with-CXX — построение библиотеки libpq++ позволяет создавать программы C++, работающие с PostgreSQL;
    --enable-odbc — поддержка подключения к PostgreSQL из программ, имеющих совместимый драйвер ODBC (например, Microsoft Access);
    --enable-multibyte — возможность использования многобайтовых кодировок (например, для японского языка);
    --with-maxbackends=4MOo — в параметре указывается максимальное количество подключений (по умолчанию — 32).
    Ниже приведен полный список параметров конфигурации.
    --ргеПх=и/?ефмкс. Каталог, в котором размещаются установленные файлы вместо используемого по умолчанию каталога /usr/local/pgsql.
    --exec-prefix=npe^wKc. Каталог для размещения системных исполняемых файлов.
    --Ълг\й\г=каталог. Каталог для размещения пользовательских исполняемых файлов (например, psql).
    --datadi г=каталог. Каталог для установки файлов данных, используемых программами PostgreSQL, а также для примеров файлов конфигурации. Каталог, заданный этим параметром, не используется в качестве альтернативного каталога для хранения данных; он всего лишь содержит служебные файлы PostgreSQL, доступные только для чтения.
    --зузсопЛдйтг^катеалог. Каталог для размещения системных конфигурационных файлов. По умолчанию файлы хранятся в подкаталоге etc базового каталога установки.
    --11 bdi г=каталог. Каталог для размещения библиотечных файлов. В системе Linux этот каталог также должен указываться в файле ld.so.conf.
    - - i ncl udedi г=каталог. Каталог для размещения заголовочных файлов С и C++. По умолчанию заголовочные файлы хранятся в подкаталоге include базового каталога установки.
    -- docdi г=т«шялог. Каталог для размещения файлов документации. Man-страницы PostgreSQL хранятся в другом каталоге.
    --mandi г=каталог. Каталог для размещения man-страниц.
    - -with-includes=K'fl7/za/;c^H. Список каталогов, просматриваемых при поиске дополнительных заголовочных файлов. Элементы списка разделяются двоеточиями (:).
    --with-1 ibraries=каталоги. Список каталогов, просматриваемых при поиске дополнительных библиотечных файлов. Элементы списка разделяются двоеточиями (:).
    --enable-locale. Поддержка локальных контекстов. Отрицательно сказывается на быстродействии и включается только в том случае, если вы работаете не в англоязычной среде.
    --enable-multibyte. Поддержка многобайтовых кодировок. При указании этого ключа включается поддержка символов, не входящих в кодировку ASCII; особенно часто используется при работе с японским, китайским и корейским языками.
    --with-pgport=HO,wep. Номер порта, используемый PostgreSQL по умолчанию. Может быть изменен при запуске приложения postmaster.
    --with-maxbackends=4WG70. Максимальное количество подключений (по умолчанию - 32).
    --with-CXX. В процессе установки автоматически компилируется интерфейсная библиотека C++. Ключ указывается в том случае, если вы намерены разрабатывать приложения C++, работающие с PostgreSQL.
    --with-perl. В процессе установки автоматически компилируется интерфейсный модуль Perl. Этот модуль должен устанавливаться в каталог, обычно принадлежащий пользователю root, поэтому для завершения установки при выборе этого режима вам придется обладать правами root. Ключ обязателен лишь в том случае, если вы собираетесь использовать процедурный язык pi/Perl.
    --with-python. В процессе установки автоматически компилируется интерфейсный модуль PostgreSQL Python. Как и в случае с ключом --with-perl, для завершения установки с этим ключом необходимо обладать правами root. Ключ обязателен лишь в том случае, если вы собираетесь использовать процедурный язык pi/Python.
    --with-tcl. Включение поддержки Tel. При наличии этого ключа устанавливаются приложения и расширения PostgreSQL, требующие Tel, такие как pgaccess (популярный графический клиент баз данных) и процедурный язык pl/Tcl.
    --without-tk. Поддержка Tel компилируется без поддержки графического инструментария Tk. Если ключ задается в сочетании с ключом - -with-tcl, то приложения PostgreSQL, для которых необходима поддержка Tk (например, pgtksh и pgaccess), не устанавливаются.
    --with-tclconfig=KaOTiM02, - -with-tkconfig=K<OTzoro2. Каталог для размещения конфигурационного файла Tel или Tk (tclconfig.sh или tkConfig.sh в зависимости от ключа). Эти два файла устанавливаются при установке Tcl/Tk, а хранящиеся в них данные используются интерфейсными модулями Tcl/Tk в PostgreSQL.
    --enable-odbc. Включение поддержки ODBC.
    --with-odbcinst=Ka?fl<7.//o,>. Каталог, в котором драйвер ODBC ищет файл odbcinst.ini. По умолчанию файл находится в подкаталоге etc базового каталога установки.
    --vnth-krb4=x:<27tta.ic^, - -with-krb5=Ka7na20<!. Поддержка системы аутентификации Kerberos. В настоящей книге система Kerberos не рассматривается.
    --with-krb-srvnam=2iWJ. Имя службы Kerberos. По умолчанию используется имя
    postgres.
    --with-openssl=x<2/n<Mo<>. Поддержка шифрованного обмена данными с базой по протоколу SSL. Пакет OpenSSL должен быть установлен в заданном каталоге и правильно настроен. Ключ обязателен в том случае, если вы собираетесь использовать stunnel.
    --with-Java. ПоддержкаJava/JDBC. Для правильной компиляции PostgreSQL с этим ключом необходимы пакеты Ant и JDK.
    --enable-syslog. Ведение системного журнала при помощи демона syslog.
    --enable-debug. Компиляция всех библиотек и приложений PostgreSQL производится с включением отладочных символических имен. Это приводит к снижению быстродействия и росту числа двоичных файлов, но символические имена упрощают диагностику ошибок, возникающих при работе с PostgreSQL.
    --enable-cassert. Включение режима проверки условий (assertions). Режим снижает быстродействие PostgreSQL и используется только в процессе отладки самой системы PostgreSQL
Если после компиляции PostgreSQL выяснится, что вы забыли включить нужный режим, вернитесь к этому этапу, измените конфигурацию и продолжите процесс построения и установки PostgreSQL. Если возврат происходит перед завершением установки, обязательно выполните команду gmake clean в каталоге верхнего уровня иерархии исходных текстов (обычно /usr/local/src/postgresql-[«epc«^]). В результате будут удалены все промежуточные объектные и частично откомпилированные файлы.

Этап 4. компиляция исходных текстов

После выполнения команды configure переходите к компиляции PostgreSQL командой gmake.

На компьютерах с системой Linux вместо gmake может использоваться команда make. Пользователи BSD используют команду gnumake.

Компиляция исходных текстов при помощи утилиты GNU make

Код: Выделить всё

[postgresPhost postgresql-7.1.3]# gmake 

gmake -C doc all 

gmake[l]: Entering directory /usr/local/src/postgresql-7.1.3/doc' 

gmake[l]: Nothing to be done for all'. 

gmake[l]: Leaving directory /usr/local/src/postgresql-7.1.3/doc' 

gmake -C src all 

gmake[l]: Entering directory /usr/local/src/postgresql-7.1.3/src' 

gmake -C backend all 

gmake[2]: Entering directory /usr/local/src/postgresql-7.1.3/src/backend' 

gmake -C utils fmgroids.h 

gmake[3]: Entering directory /usr/local/src/postgresql-7.1.3/src/backend/utils' 

[...] 
В зависимости от быстродействия компьютера процесс может занять 10 минут, час и даже больше. После завершения компиляции появляется следующее сообщение:

Код: Выделить всё

All of PostgreSQL is successfully made. Ready to install.
Этап 5. Регрессионное тестирование

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

Регрессионное тестирование выполняется командой gmake check. Результат ее выполнения:

Регрессионное тестирование

Код: Выделить всё

[postgres@host postgresql-7.1.3] gmake check 

gmake -С doc all 

gmake[l]: Entering directory /usr/local/src/postgresql-7.1.3/doc' 

gmake[l]: Nothing to be done for all'. 

gmake[l]: Leaving directory /usr/local/src/postgresql-7.1.3/doc' 

[...] 
Команда gmake check строит тестовый вариант PostgreSQL и выполняет серию тестов. После завершения каждого теста выводится результат: ok для удачных тестов и failed для неудачных. Примерный вид сообщения об ошибке приведен в ниже (вероятно, в вашей системе количество тестов будет выше указанного).

Выходные данные регрессионных тестов

Код: Выделить всё

============
1 of 76 tests failed. 
============

The differences that caused some tests to fail can be viewed in the file ./regression.(Jiffs'. A copy of the test summary that you see above is saved in the file ./regression.out'. 
Файлы, упоминаемые в листинге 2.9 (regression.diffs и regression.out), размещаются в подкаталоге src/test/regress каталога исходных текстов. Если исходные тексты PostgreSQL размещаются в каталоге /usr/local/src, то файлы результатов регрессионных тестов будут находиться в каталоге /usr/local/src/postgresql-[версия]/src/ test/regress.

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

Регрессионные тесты не могут выполняться с правами root. Команда gmake check должна запускаться пользователем postgres.

Этап 6. Установка откомпилированных программ и библиотек

После настройки и компиляции исходного кода PostgreSQL откомпилированные библиотеки, двоичные файлы и файлы данных необходимо перенести в другой, более подходящий каталог. В случае обновления существующей версии PostgreSQL обязательно создайте резервные копии баз данных.


Если на этапе 3 был задан нестандартный каталог установки, укажите его вместо каталога /usr/ local/pgsql.

Команда gmake install

Код: Выделить всё

S su -с "gmake install" Password: 

gmake -C doc install 

gmaketl]: Entering directory /usr/local/src/postgresql-7.1.3/doc' 

mkdir /usr/local/pgsql 

mkdir /iusr/local/pgsql/man 

mkdir /iusr/local/pgsql/doc 

mkdir /iusr/local/pgsql/doc/html 

$ su -c "chown -K postgres.postgres /usr/local/pgsql" 

Password: 
Команда su -с "gmake install" устанавливает откомпилированные файлы в каталог, заданный на этапе 3 с ключом --prefix. Если ключ не указывался, файлы устанавливаются в принятый по умолчанию каталог /usr/local/pgsq. Команда su -с "chown -К postgres.postgres /usr/1 oca! /pgsql" назначает владельцем установочного каталога PostgreSQL пользователя postgres, позволяя переключиться на права пользователя root на время выполнения команды.

Если вы хотите включить поддержку интерфейса с Perl или Python, но не обладаете правами root, необходимые интерфейсы можно включить вручную. Команды установки модулей Perl и Python:

Ручная установка модулей Perl и Python

Код: Выделить всё

$ su -с "gmake -С src/interf aces/perl 5 install" 

Password: 

Password: 

gmake: Entering directory /usr/local/src/postgresql-7.1.3/src/interfaces/perl5' 

perl Makefile. PL 

Checking if you kit Is complete. . . 

Looks good 

Writing Makefile for PostgreSQL 

gmake -f Makefile clean 

[...] 

$ su -c "gmake -C src/interfaces/python install" 

Password: 

gmake: Entering directory /usr/1ocal/src/postgresql-7.1.3/src/interfaces/python' 

sed -e 's.@1ibpq_srcdir@, ../../. ./src/interfaces/libpq,g' \ 

-e 's,@libpq_builddir@. ../../. ./src/interfaces/libpq.g' \ 

-e 's£@EXTRA_LIBS(a£ -Iz -Icrypt -Iresolv -Insl -Idl -1m -Ibsd -Ireadline -Itermcap %g' \ 

-e ' s*@INCLUDES@*- I. ./../.. /src/includelg1 \ 

[...] 
Также рекомендуется установить заголовочные файлы PostgreSQL. По умолчанию устанавливаются только заголовочные файлы, предназначенные для разработки клиентских приложений. Если вы собираетесь использовать расширенные возможности PostgreSQL (например, разрабатывать пользовательские функции или приложения на С, ориентированные на библиотеку libpq), вам понадобятся соответствующие заголовочные файлы. Команды установки этих файлов:

Установка всех заголовочных файлов

Код: Выделить всё

$ su -c "gmake install -all -headers" 

Password: 

gmake -C src install -all -headers 

gmake[l]: Entering directory /usr/local/src/postgresql-7.1.3/src' 

gmake -C include install-all-headers 

[...]

Этап 7. Настройка переменных среды

Использовать переменные среды PostgreSQL не обязательно. Тем не менее эти переменные задействованы при выполнении различных операций PostgreSQL, включая запуск и завершение процессов postmaster. В переменных среды задаются пути к каталогу bin и каталогу man-документации. Для этого в файл /etc/profile дописываем (решение относится к командным интерпретаторам на базе sh, включая bash и ksh):

Код: Выделить всё

PATH=$PATH:/usrЛocal/pgsql/bin
MANPATH=$MANPATH:/usr/1ocal/pgsql/man 
export PATH MANPATH 
ПРИМЕЧАНИЕ

Чтобы переменные среды использовались командным интерпретатором, необходимо заново войти в систему после включения соответствующих строк в файл /etc/profile.

Возможно, вам также придется сообщить системе местонахождение общих библиотек PostgreSQL (в зависимости от того, как организована работа с общими библиотеками в вашей системе). В таких системах, как Linux, FreeBSD, NetBSD, OpenBSD, Irix, HP/UX и Solaris, это обычно не требуется.

При стандартной установке поиск общих библиотек производится в каталоге /usr/local/pgsql/lib (или другом каталоге, указанном после ключа --prefix во время конфигурации). Обычно для этого переменной среды LD_LIBRARY_PATH присваивается значение /usr/local/pgsql/lib.


Создание переменной среды LD_LIBRARY_PATH в bash

Код: Выделить всё

$ LD_LIBRARY_PATH=/usr/local/pgsql/lib 
$ export LD_LIBRARY_PATH


Создание переменной среды LD_LIBRARY_PATH в csh и tcsh

Код: Выделить всё

$ setenv LDJ-IBRARY_PATH=/usr/local/pgsql/lib 
Этап 8. Инициализация и запуск PostgreSQL

Если вы зарегистрированы как привилегированный пользователь root, то вместо выполнения команд su - с, знакомых по предыдущим этапам, вам придется войти в систему под именем postgres, созданным на первом этапе. После входа под именем postgres введите команду:

Инициализация базы данных

Код: Выделить всё

$ /usr/local/pgsql/bin/initdb -D /usr/1ocal/pgsql/data 
Ключ -D определяет каталог, в котором будут храниться данные. То же самое можно сделать при помощи переменной среды PCDATA. Если значение переменной PCDATA задано, ключ -D не обязателен. Если вы предпочитаете хранить файлы данных в другом каталоге, убедитесь в том, что пользователь postgres обладает правом записи в этот каталог. Примерный результат инициализации:

Выходные данные initdb

Код: Выделить всё

$ /usr/local/pgsql/bin/intidb -D /usr/local/pgsql/data 

This database system will be initialized with username "postgres." 

This user will own all the data files and must also own the server process. 

Creating directory /usr/pgsql/data 

Creating directory /usr/pgsqi/data/case 

Creating directory /usr/pgsql/data/global 

Creating directory /usr/pgsql/pg_xlog 

Creating tempiatel database in /usr/local/pgsql/data/base/l 

DEBUG: database system was shut down at 2001-08-24 16:36:35 PDT 

DEBUG: Checkpoint record at (0. 8) 

DEBUG: Redo record at (0. 8): Undo record at (0. 8): Shutdown TRUE 

DEBUG: NextTransactionld: 514; NextOid: 16384 

DEBUG: database system is in production state 

Creating global relations in /usr/local/pgsql/data/global 

DEBUG: database system was shut down at 2001-08-24 16:36:38 PDT 

DEBUG: Checkpoint record at (Q. 108) 

DEBUG: Redo record at (0. 108): Undo record at (0. 0); Shutdown TRUE 

DEBUG: NextTransactionld: 514: NextOid: 17199 

DEBUG: database system is in production state 

Initializing pg_shadow 

Enabling unlimited row width for system tables. 

Creating system views. 

Loading pg_description. 

Setting lastsysoid. 

Vacuuming database. 

Copying tempiatel to tempiateO. 

Success. You can now start the database server using: 

/usr/local/pgsql/bin/postmaster -D /usr/local/pgsql/data 

or 

/usr/local/pgsql/bin/pg_ct1 -D /usr/local/pgsql/data -1 logfile start 
ПРИМЕЧАНИЕ

Чтобы в PostgreSQL использовался другой каталог данных, укажите путь к этому каталогу с ключом -О. Каталог должен быть предварительно инициализирован командой initdb.

В конце выходных данных команды initdb приводится информация о двух вариантах запуска сервера PostgreSQL. В первом варианте процесс postmaster запускается в активном режиме. После ввода команды, приведенной ниже, приглашение командной строки становится недоступным до тех пор, пока процесс postmaster не будет остановлен клавишами Ctrl+C.

Запуск postmaster в активном режиме

Код: Выделить всё

$ /usr/local/pgsql/bin/postmaster -D /usr/local/pgsql/data 

DEBUG: database system was shut down at 2001-10-12 23:11:00 PDT 

DEBUG: Checkpoint record at (0. 1522064) 

Этап 9. Настройка сценария SysV для PostgreSQL

Сценарий SysV позволяет корректно управлять работой PostgreSQL в системе SysV и выполнять такие операции, как запуск, остановка и проверка состояния. Он работает в большинстве версий Linux на базе Red Hat, включая Mandrake. Кроме того, после небольшой модификации он должен работать и в других системах SysV (UnixWare, Solaris и т. д.). Сценарий называется linux. Перед использованием его необходимо предварительно скопировать в каталог init.d. Возможно, для этого вам понадобятся права root.

Сначала перейдите в каталог, в котором были распакованы исходные тексты PostgreSQL (в нашем примере это /usr/local/src/postgresql-7.1.3/). Скопируйте сценарий из каталога contrib/start-scripts в каталог init.d командой.

Копирование сценария linux

Код: Выделить всё

$ cd /usr/local/src/postgresql-7.1.3/ 

$ su -с "ср contrib/start-scripts/linux /etc/re.d/init.d/postgresql" 
Копии присваивается имя postgresql. Хотя имя сценария выбирается произвольно, обычно используется имя postgresql или postgres.

После копирования файл сценария необходимо сделать исполняемым. Для этого используется команда:

Назначение права исполнения для сценария SysV

Код: Выделить всё

$ su -с "chmod a+x /etc/re.d/init.d/postgresql" 
Для использования сценария SysV в Red Hat ничего больше не требуется, если вы намерены ограничиться ручным запуском PostgreSQL. Но если сценарий должен автоматически запускать PostgreSQL при загрузке компьютера (или смене уровня исполнения), необходимо установить программу chkconfig. После установки программы chkconfig в начало файла /etc/rc.d/init.d/postgresql включаются следующие две строки (вместе с символом #):

Код: Выделить всё

# Chkconfig: 345 85 15 

# description: PostgreSQL RDBMS 
Приведенные в этом примере параметры будут нормально работать в вашей системе. Тем не менее полезно представлять себе смысл выполняемых действий. Первая группа цифр (345) представляет уровни исполнения, на которых запускается PostgreSQL. В нашем примере PostgreSQL запускается на уровнях 3, 4 и 5. Второе число (85) определяет приоритет запуска PostgreSQL по отношению к другим программам. Большое значение означает, что PostgreSQL запускается позже

других программ. Третье число (15) определяет относительный приоритет завершения PostgreSQL. Оно должно быть небольшим, чтобы программы завершались в порядке, обратном порядку их запуска. Как было сказано выше, сценарий должен работать с указанными параметрами, но при необходимости их можно изменить.

После того как эти две строки будут включены в сценарий, в Red Hat и Mandrake Linux для запуска PostgreSQL можно использовать команды, приведенные ниже. Команды выполняются только с правами root.

Запуск PostgreSQL с использованием сценария SysV

Код: Выделить всё

$ service postgresql start 
Starting PostgreSQL:ok 

$ service postgresql stop 
Stopping PostgreSQL:ok


ПРИМЕЧАНИЕ

По умолчанию сценарий SysV направляет всю выводимую отладочную информацию PostgreSQL в файл /usr/local/pgsql/data/serverlog.

Этап 10. Создание базы данных

После запуска СУБД PostgreSQL можно переходить к настройке прототипа базы данных templatel. Если все базы данных, которые вы планируете создавать в будущем, будут обладать одним набором системных параметров, установите эти параметры для шаблона templatel. Например, если вы собираетесь программировать на языке PL/lgSQL, включите поддержку языка в templatel перед выполнением команды createdb. В этом случае созданная база данных унаследует атрибуты прототипа templatel, включая поддержку языка PL/pgSQL.

На следующем шаге создается новая база данных. В наших примерах будет использоваться простая тестовая база, использовать прототип templatel для экспериментальных целей не рекомендуется. Поскольку ни один пользователь с правом создания баз данных еще не определен, войдите в систему под именем postgres. Позднее вы научитесь создавать пользователей с правом создания баз данных, эта тема обсуждается в главе 10. Новая база данных testdb создается командой:

Создание базы данных

Код: Выделить всё

$ createdb testdb 

CREATE DATABASE 
Сообщение CREATE DATABASE означает, что создание базы данных прошло успешно. Операции с созданной базой данных могут выполняться через клиента psql, предоставляющего интерфейс командной строки PostgreSQL Для этого следует ввести команду:

Обращение к базе данных через psql

Код: Выделить всё

$ psql testdb 
Теперь можно вводить команды SQL (например, SELECT) в приглашении psql. Программа psql описана в главе 4.

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

Пример запроса к системной таблице

Код: Выделить всё

testdb=# SELECT * FROM pg_language