Практикум. Ручная установка Pangolin
Подготовка к установке
-
Проверьте наличие системного пользователя postgres. Если такого пользователя нет, создайте его, установив оболочку
/bin/bash
и домашний каталог/var/lib/postgres
. Пользователь (в данном случаеstudent
) должен иметь возможность выполнять команды от имени других пользователей с помощьюsudo
(в зависимости от используемой операционной системы, пользователю обычно достаточно быть членом группыwheel
илиsudo
):$ id
uid=1000(student) gid=1000(student) группы=1000(student),10(wheel)
$ id postgres
id: «postgres»: такого пользователя нет
$ sudo useradd -m -r -d /var/lib/postgres -s /bin/bash postgres
$ id postgres
uid=978(postgres) gid=977(postgres) группы=977(postgres)В зависимости от настроек команда
sudo
, возможно, потребует ввода пароля учетной записи, от имени которой запускается sudo (в данном случае -student
). Для этой учетной записи должна быть соответствующая настройка для разрешения выполнятьsudo
. -
Убедитесь в наличии домашнего каталога пользователя postgres, а также в том, что его пароль в ОС заблокирован, а оболочка -
/bin/bash
. Проверьте права на домашний катало гpostgres
- они должны быть700
:$ ls -ld ~postgres/
drwx------. 4 postgres postgres 4096 авг 22 07:57 /var/lib/postgres/
$ grep postgres /etc/passwd postgres:x:978:977::/var/lib/postgres:/bin/bash
$ sudo passwd -S postgres
postgres LK 2024-08-22 -1 -1 -1 -1 (Пароль заблокирован.)Так как пароль у пользователя
postgres
заблокирован, непосредственный вход в сеанс от имени этой учетной записи невозможен. Также невозможно использовать командуsu - postgres
, так как она требует ввода пароля учетной записи postgres, а она заблокирована. -
Проверьте возможность запуска сеанса от имени заблокированной учетной записи postgres, используя команду sudo
-i -u postgres
:$ sudo -i -u postgres
$ pwd /var/lib/postgres
$ id
uid=978(postgres) gid=977(postgres) группы=977(postgres)
$ whoami postgres
$ who am i student pts/1
$ exit выходМожно, хотя и излишне, использовать
sudo su - postgres
. Обратите внимание на разницу между командамиwhoami
иwho am i
. Первая из них выдает имя пользователя в текущей сессии (в данном случае - оболочка bash, запущенная с помощьюsudo
), как и командаid
. Командаwho am i
выдает имя пользователя, вошедшего в сеанс ОС исходно до выполнения командsu
илиsudo
. Для выхода из сеанса -exit
,logout
илиCtrl+D
. -
Проверьте наличие архива с установочным пакетом ПО Pangolin и получите его содержимое. Пакет должен быть в подкаталоге
Dist
домашнего каталога пользователяstudent
. Для удобства распаковка будет производиться в подкаталогеDistrib
домашнего каталога:$ ls -1 ~/Dist/
license_edu_202501.json PSQ-06.002.00-69-redos7.3.2-distrib.zip PSQ-06.002.00-69-redos7.3.2-gst-distrib.zip
$ mkdir ~/Distrib && cd ~/Distrib /home/student/Distrib
$ unzip -l ~/Dist/PSQ-06.002.00-69-redos7.3.2-gst-distrib.zip
Archive: /home/student/Dist/PSQ-06.002.00-69-redos7.3.2-gst-distrib.zip
Length Date Time Name
--------- ---------- ----- ----
64 04-28-2024 16:53 PSQ-06.002.00-69-redos7.3.2-distrib.zip.gst
1495 04-28-2024 16:53 PSQ-06.002.00-69-redos7.3.2-distrib.zip.gst.p7s
--------- -------
1559 2 files
$ unzip -l ~/Dist/PSQ-06.002.00-69-redos7.3.2-distrib.zip
Archive: /home/student/Dist/PSQ-06.002.00-69-redos7.3.2-distrib.zip
Length Date Time Name
--------- ---------- ----- ----
490 04-28-2024 16:50 PSQ-06.002.00-69-redos7.3.2-documentation-
distrib.pom
243560569 04-28-2024 16:48 PSQ-06.002.00-69-redos7.3.2-documentation-
distrib.zip
486 04-28-2024 16:50 PSQ-06.002.00-69-redos7.3.2-installer-distrib.pom
3667157 04-28-2024 16:48 PSQ-06.002.00-69-redos7.3.2-installer-distrib.zip
482 04-28-2024 16:49 PSQ-06.002.00-69-redos7.3.2-owned-distrib.pom
51369991 04-28-2024 16:48 PSQ-06.002.00-69-redos7.3.2-owned-distrib.zip
482 04-28-2024 16:50 PSQ-06.002.00-69-redos7.3.2-party-distrib.pom
549620708 04-28-2024 16:49 PSQ-06.002.00-69-redos7.3.2-party-distrib.zip
1209 04-28-2024 16:50 PSQ-06.002.00-69-redos7.3.2-unpacker-distrib.sh
--------- -------
848221574 9 files -
Создайте каталог
~/Distrib
и, перейдя в него, распакуйте архив ПО Pangolin:$ cd ~/Distrib/
$ unzip ~/Dist/PSQ-06.002.00-69-redos7.3.2-distrib.zip
Archive: /home/student/Dist/PSQ-06.002.00-69-redos7.3.2-distrib.zip
inflating: PSQ-06.002.00-69-redos7.3.2-documentation-distrib.pom
inflating: PSQ-06.002.00-69-redos7.3.2-documentation-distrib.zip
inflating: PSQ-06.002.00-69-redos7.3.2-installer-distrib.pom
inflating: PSQ-06.002.00-69-redos7.3.2-installer-distrib.zip
inflating: PSQ-06.002.00-69-redos7.3.2-owned-distrib.pom
inflating: PSQ-06.002.00-69-redos7.3.2-owned-distrib.zip
inflating: PSQ-06.002.00-69-redos7.3.2-party-distrib.pom
inflating: PSQ-06.002.00-69-redos7.3.2-party-distrib.zip
inflating: PSQ-06.002.00-69-redos7.3.2-unpacker-distrib.shВ каталоге
Distrib
теперь находятся извлеченные из архива zip файлы, содержащие ПО для установки. Распаковка может быть автоматизирована с помощью скрипта с суффиксом -unpacker-distrib.sh
. -
Проверьте права на скрипт установки и запустите его:
$ ls -l PSQ-06.002.00-69-redos7.3.2-unpacker-distrib.sh
-rw-r--r-- 1 student student 1209 апр 28 16:50 PSQ-06.002.00-69-redos7.3.2- unpacker-distrib.sh
$ file PSQ-06.002.00-69-redos7.3.2-unpacker-distrib.sh PSQ-06.002.00-69-redos7.3.2-unpacker-distrib.sh: Bourne-Again shell script, UTF- 8 Unicode text executable
$ bash PSQ-06.002.00-69-redos7.3.2-unpacker-distrib.sh start
~/Distrib/distributive ~/Distrib
successful completion: PSQ-06.002.00-distrib.tar.gz ~/Distrib -
В результате выполнения предыдущего скрипта в текущем каталоге должен появиться собранный tar архив с установочным ПО Pangolin:
$ ls -ltrh
total 1.6G
-rw-r--r-- 1 student student 233M Apr 28 16:48 PSQ-06.002.00-69-redos7.3.2- documentation-distrib.zip
-rw-r--r-- 1 student student 3.5M Apr 28 16:48 PSQ-06.002.00-69-redos7.3.2- installer-distrib.zip
-rw-r--r-- 1 student student 49M Apr 28 16:48 PSQ-06.002.00-69-redos7.3.2- owned-distrib.zip
-rw-r--r-- 1 student student 482 Apr 28 16:49 PSQ-06.002.00-69-redos7.3.2- owned-distrib.pom
-rw-r--r-- 1 student student 525M Apr 28 16:49 PSQ-06.002.00-69-redos7.3.2- party-distrib.zip
-rw-r--r-- 1 student student 482 Apr 28 16:50 PSQ-06.002.00-69-redos7.3.2- party-distrib.pom
-rw-r--r-- 1 student student 486 Apr 28 16:50 PSQ-06.002.00-69-redos7.3.2- installer-distrib.pom
-rw-r--r-- 1 student student 490 Apr 28 16:50 PSQ-06.002.00-69-redos7.3.2- documentation-distrib.pom
-rw-r--r-- 1 student student 1.2K Apr 28 16:50 PSQ-06.002.00-69-redos7.3.2- unpacker-distrib.sh
-rw-rw-r-- 1 student student 803M Aug 22 10:07 PSQ-06.002.00-distrib.tar.gzОпция
-t
командыls
выводит сортированный по времени модификации список файлов, а опция-r
обеспечивает вывод этого списка в обратном порядке. Поэтому файлы, модифицированные недавно будут в конце списка. -
Используя архиватор tar получите список содержимого архива установочного ПО:
$ tar xvf PSQ-06.002.00-distrib.tar.gz
...
utilities/psql_get_password_hash utilities/pg_certs_rotate/ utilities/pg_certs_rotate/pg_certs_rotate_agentВ команде использован BSD стиль опций без минуса, однако POSIX стиль перед этими опциями допустим. Так как tar архив сжат gzip, то можно было также указать опцию
z
, однако tar подставил ее автоматически. Опцияv
не обязательна и обеспечивает режим подробного информирования. После опцииf
указывают имя файла архива. -
Проверьте, извлечены ли из tar архива пакеты RPM, содержащие ПО Pangolin:
$ ls -1 *.rpm pangolin-backup-tools-1.2.0-redos7.3.2.x86_64.rpm pangolin-dbms-6.2-6.2.0-redos7.3.2.x86_64.rpm pangolin-dbms-6.2-client-6.2.0-redos7.3.2.x86_64.rpm pangolin-dbms-6.2-libpq-6.2.0-redos7.3.2.x86_64.rpm
pangolin-dbms-6.2-libpq-dev-6.2.0-redos7.3.2.x86_64.rpm
pangolin-manager-2.1.0-redos7.3.2.x86_64.rpm
pangolin-pooler-1.3.0-redos7.3.2.x86_64.rpm
Установка
-
Получите информацию о пакете с серверным ПО СУБД Pangolin, а также о пакете с клиентским ПО. Используйте rpm с опциями:
-q
— режим запроса,-i
— получение информации о пакете и-p
— обращение к пакету, еще не установленному в системе:$ rpm -qip pangolin-dbms-6.2-6.2.0-redos7.3.2.x86_64.rpm
Name
Version
Release
Architecture: x86_64
Install Date: (not installed)
: pangolin-dbms-6.2
: 6.2.0
: redos7.3.2
Group
Size
License
Signature
Source RPM : pangolin-dbms-6.2-6.2.0-redos7.3.2.src.rpm
Build Date : Sat 27 Apr 2024 02:01:52 PM MSK
: Applications/Databases
: 70739207
: PostgreSQL
: (none)
Build Host : localhost
Relocations : /usr/pangolin-6.2.0
URL : https://sbertech.ru
Summary : Pangolin Database Management System
Description :
Platform V Pangolin is an advanced Object-Relational database management system
(DBMS).
, which will in turn allow you to create
and maintain Pangolin databases.
$ rpm -qip pangolin-dbms-6.2-client-6.2.0-redos7.3.2.x86_64.rpm
The pangolin-dbms package contains the programs needed to create
and run a Pangolin server
Name
Version
Release
Architecture: x86_64
Install Date: (not installed)
: pangolin-dbms-6.2-client
: 6.2.0
: redos7.3.2
Group
Size
License
Signature
Source RPM : pangolin-dbms-6.2-6.2.0-redos7.3.2.src.rpm
Build Date : Sat 27 Apr 2024 02:01:52 PM MSK
: Applications/Databases
: 12268029
: PostgreSQL
: (none)
Build Host : localhost
Relocations : /usr/pangolin-dbms-client-6.2.0
URL : https://sbertech.ru
Summary : Pangolin DBMS client programs
Description :
Platform V Pangolin is an advanced Object-Relational database management system
(DBMS).
The pangolin-dbms-client package contains the client programs that you will need
to
access a Pangolin DBMS server. These client programs can be located on the same
machine as the
Pangolin server, or on a remote machine that accesses a Pangolin server
over a network connection. The Pangolin server can be found in the
platform-v-pangolin-server sub-package. -
Получите из еще не установленного пакета с ПО сервера СУБД Pangolin, куда будет установлен файл с исполняемым кодом postgres после установки пакета. Используйте команду rpm с опциями
-qlp
,-l
- список файлов, установленных из пакета. Также найдите, в какое место файловой системы будет установлена утилита psql из пакета с клиентским ПО:$ rpm -qlp pangolin-dbms-6.2-6.2.0-redos7.3.2.x86_64.rpm | fgrep bin/postgres /usr/pangolin-6.2.0/bin/postgres
$ rpm -qlp pangolin-dbms-6.2-client-6.2.0-redos7.3.2.x86_64.rpm | fgrep bin/psql /usr/pangolin-dbms-client-6.2.0/bin/psql -
Уст ановите ПО сервера и клиента. Используйте
dnf install
с опцией-y
- автоматически отвечает yes на все вопросы. Также можно использоватьyum localinstall
илиrpm -i
, однако в последнем случае зависимости пакетов не будут установлены автоматически. Затем проверьте, установились ли пакеты с помощьюrpm -qa
:$ sudo dnf -y install pangolin-dbms-6.2-6.2.0-redos7.3.2.x86_64.rpm
Last metadata expiration check: 1:27:00 ago on Thu 22 Aug 2024 01:33:38 PM MSK. Dependencies resolved.
...
Verifying
Verifying
Verifying
Verifying
Verifying
Verifying
: perl-DBI-1.642-2.el7.x86_64
: uuid-1.6.2-1.el7.x86_64
: jsoncpp-1.9.4-3.el7.x86_64
: libpq-15.0-1.el7.x86_64
: perl-DBD-Pg-3.17.0-1.el7.x86_64
: pangolin-dbms-6.2-6.2.0-redos7.3.2.x86_64
Installed:
jsoncpp-1.9.4-3.el7.x86_64 libpq-15.0-1.el7.x86_64 pangolin-dbms-6.2-
6.2.0-redos7.3.2.x86_64 perl-DBD-Pg-3.17.0-1.el7.x86_64 perl-DBI-1.642-
2.el7.x86_64 uuid-1.6.2-1.el7.x86_64
Complete!
$ sudo dnf -y install pangolin-dbms-6.2-client-6.2.0-redos7.3.2.x86_64.rpm
Last metadata expiration check: 1:29:52 ago on Thu 22 Aug 2024 01:33:38 PM MSK. Dependencies resolved.
...
Verifying : pangolin-dbms-6.2-client-6.2.0-redos7.3.2.x86_64
Installed:
pangolin-dbms-6.2-client-6.2.0-redos7.3.2.x86_64
Complete!
$ rpm -qa pangolin\*
pangolin-dbms-6.2-6.2.0-redos7.3.2.x86_64
pangolin-dbms-6.2-client-6.2.0-redos7.3.2.x86_64С опциями
-qa
команда rpm выводит список имен всех установленных пакетов в системе, однако если использовать файловый шаблон (globbing), можно отфильтровать нужные имена пакетов. -
Подключите библиотеки, установленные в каталог
/usr/pangolin/lib
из пакета серверного ПО и каталог/usr/pangolin-dbms-client/lib
- клиентского. Для этого создайте файл конфигурации дляldconfig
. Проиндексируйте базу данных библиотек и проверьте, подк лючаются ли библиотеки к ПО сервера и клиентов:$ echo '/usr/pangolin/lib' | sudo tee /etc/ld.so.conf.d/pangolin.conf /usr/pangolin/lib
$ echo '/usr/pangolin-dbms-client/lib' | sudo tee -a /etc/ld.so.conf.d/pangolin.conf /usr/pangolin-dbms-client/lib
$ cat /etc/ld.so.conf.d/pangolin.conf /usr/pangolin/lib /usr/pangolin-dbms-client/libВ каталоге
/etc/ld.so.conf.d
можно размещать конфигурационные файлы с путями к каталогам, содержащим динамические библиотеки (shared objects). Другой путь - прописать пути к библиотекам непосредственно в файл конфигурации/etc/ld.so.conf
. Собственно база динамических библиотек -/etc/ld.so.cache
:$ sudo ldconfig
Утилита
ldconfig
индексирует базу данных динамических библиотек. Утилита ldd позволяет проверить список динамических библиотек, которые требуются для запуска динамически скомпонованных исполняемых файлов в формате ELF:$ ldd /usr/pangolin-dbms-client/bin/psql | grep libpq
libpq.so.5 => /usr/pangolin-dbms-client/bin/../lib/libpq.so.5
(0x00007f505c307000)
$ ls -l /usr/pangolin-dbms-client/bin/../lib/libpq.so.5 lrwxrwxrwx 1 root root 13 апр 27 14:01 /usr/pangolin-dbms-client/bin/../lib/libpq.so.5 -> libpq.so.5.15Другой возможный путь указать местоположение в файловой системе каталогов, содержащих динамические библиотеки - использование переменной окружения
LD_LIBRARY_PATH
.
Подготовка к запуску
Внимание!
Перейдите в домашний каталог командой cd.
-
Со здайте каталог для кластера баз данных (
PGDATA
), каталог для журналов отчета, а также каталог для размещения лицензии. Имена соответствуют рекомендуемым в документации. Установите на созданные каталоги владельца и группуpostgres
:$ cd
$ sudo mkdir -p /pgdata/06/data /pgerrorlogs/06 /opt/pangolin_license
$ sudo ls -ld /pgdata/06/data /pgerrorlogs/06 /opt/pangolin_license drwxr-xr-x 2 root root 4096 Aug 22 16:37 /opt/pangolin_license drwxr-xr-x 2 root root 4096 Aug 22 16:37 /pgdata/06/data
drwxr-xr-x 2 root root 4096 Aug 22 16:37 /pgerrorlogs/06
$ sudo chown -R postgres:postgres /pgdata/06 /pgerrorlogs/06 /opt/pangolin_license
$ sudo ls -ld /pgdata/06/data /pgerrorlogs/06 /opt/pangolin_license drwxr-xr-x 2 postgres postgres 4096 Aug 22 16:37 /opt/pangolin_license drwxr-xr-x 2 postgres postgres 4096 Aug 22 16:37 /pgdata/06/data drwxr-xr-x 2 postgres postgres 4096 Aug 22 16:37 /pgerrorlogs/06 -
Запишите в файлы профиля пользователей
student
и postgres настройки нескольких переменных окружения:# Pangolin
umask 022
export LD_LIBRARY_PATH=/usr/pangolin/lib
export PG_PLUGINS_PATH=/usr/pangolin/lib/plugins
export PGHOME=/usr/pangolin
export PGCLIENTENCODING=UTF8
export CLNAME=clustername
export PGDATA=/pgdata/06/data
export PG_LICENSE_PATH=/opt/pangolin_license/
export LANG=en_US.UTF-8
export LC_ALL="en_US.UTF-8"
EOF
$ sudo tee -a ~postgres/.bash_profile << EOF > /dev/null
EOFВ команде используется ввод в стандартный поток
stdin
строк посредствомhere document
- механизма оболочки. Ограничитель ввода -EOF
может быть любой последовательностью символов, единственной в строке. Опция-a
командыtee
переключает эту команду, записывающую полученные из stdin данные в файлы - аргументы, в режим добавления без переписывания предыдущего содержимого этих файлов. -
Скопируйте лицензию в соответствующий каталог и установите на него права для postgres. В этом примере предполагается, что файл лицензии находится в каталоге
~/Dist
. Если он находится в ином каталоге, измените соответствующим образом первый аргумент команды cp. Проверить местоположение файла лицензии поможет командаls
:$ sudo cp ~/Dist/license*.json /opt/pangolin_license/license.json '/home/student/Dist/license_edu_202501.json' -> '/opt/pangolin_license/license.json'
$ sudo chown -v postgres:postgres /opt/pangolin_license/license.json changed ownership of '/opt/pangolin_license/license.json' from root:root to postgres:postgres -
В сеансе пользователя ОС
postgres
проверьте работоспособность клиента и сервера, запросив информацию о версии:$ sudo -iu postgres
$ psql --version
psql (PostgreSQL) 15.5
$ postgres --product_version Platform V Pangolin 6.2.0
$ postgres --version postgres (PostgreSQL) 15.5