В этой статье рассматривается процедура установки 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. Для компиляции 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 (также называемая 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.
Код: Выделить всё
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
Код: Выделить всё
chown -R postgres.postgres postgresql-7.1.3
Ниже перечислены флаги утилиты 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.
Этап 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
Этап 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'
[...]
Код: Выделить всё
All of PostgreSQL is successfully made. Ready to install.
Регрессионное тестирование — не обязательный, но рекомендуемый этап. Он позволяет убедиться в том, что после компиляции исходных текстов 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'
[...]
Выходные данные регрессионных тестов
Код: Выделить всё
============
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'.
Регрессионные тесты не всегда выявляют все возможные ошибки. Проблемы иногда возникают из-за несогласованности параметров локального контекста (например, часовых поясов) или специфики оборудования (скажем, результатов операций с плавающей точкой). При разработке приложений 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:
Если вы хотите включить поддержку интерфейса с 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 \
[...]
Установка всех заголовочных файлов
Код: Выделить всё
$ 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
Если вы зарегистрированы как привилегированный пользователь root, то вместо выполнения команд su - с, знакомых по предыдущим этапам, вам придется войти в систему под именем postgres, созданным на первом этапе. После входа под именем postgres введите команду:
Инициализация базы данных
Код: Выделить всё
$ /usr/local/pgsql/bin/initdb -D /usr/1ocal/pgsql/data
Выходные данные 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"
После копирования файл сценария необходимо сделать исполняемым. Для этого используется команда:
Назначение права исполнения для сценария SysV
Код: Выделить всё
$ su -с "chmod a+x /etc/re.d/init.d/postgresql"
Код: Выделить всё
# Chkconfig: 345 85 15
# description: PostgreSQL RDBMS
других программ. Третье число (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
Обращение к базе данных через psql
Код: Выделить всё
$ psql testdb
Чтобы убедиться в нормальной работе базы данных, попробуйте ввести команду, приведенную ниже. Команда выводет все языки, установленные в базе данных.
Пример запроса к системной таблице
Код: Выделить всё
testdb=# SELECT * FROM pg_language