Установка PostgreSQL из пакетов

PostgreSQLНесколько дней назад опубликовал статью об установке PostgreSQL из исходных кодов. Очень интересный способ, с его помощью можно установить самую последнюю версию (14-ю). Или самому какие-нибудь изменения внести в PostgreSQL и собрать.

Но есть и проще способ. Он является рекомендуемым — установка СУБД с помощью готовых пакетов под ваш дистрибутив Linux. В таком случае будет легче поддерживать и обновлять PostgreSQL. И процесс установки проходит намного проще.

Поэтому посмотрим, как установить PostgreSQL из пакетов.

Что будет в этот раз:

  1. Самый Простой Способ
  2. Добавим репозитарий на 13-ю версию PostgreSQL
  3. Автономный пакет PostgreSQL
  4. Пакет с расширением .RUN
  5. Итоги

Так как у меня xUbuntu, рассматриваю вариант именно для этого дистрибутива. Логика будет подобной и для других систем.

1. Самый Простой Способ

Можно поступить Самым Простым Способом:

Выполняем следующую команду:

sudo apt install postgresql	

Всё! Ждем некоторое время, установка завершается (на моём стенде на это потребовалось секунд сорок). В рамках установки будет добавлен пользователь операционной системы postgres, будет создана директория для данных (PGDATA) и будет инициализирован кластер PostgreSQL. Всё то, что мы делали руками при установке из исходных кодов.

Проверяем:

test@testPC:~$ sudo su - postgres
postgres@testPC:~$ psql
psql (12.5 (Ubuntu 12.5-0ubuntu0.20.04.1))
Type "help" for help.

postgres=# select version() \gx
-[RECORD 1 ]----------------------------------------------------------------------------------------
version | PostgreSQL 12.5 (Ubuntu 12.5-0ubuntu0.20.04.1) on x86_64-pc-linux-gnu, compiled by gcc (Ubuntu 9.3.0-17ubuntu1~20.04) 9.3.0, 64-bit

postgres=# select count(*) from pg_available_extensions;
 count
-------
	44
(1 row)

Всё работает так, как нужно — и клиент установился, и расширения. Только версия 12-я, а не доступная сейчас 13.

Если запросить информацию об этом пакете:

apt-cache show postgresql

Увидим следующее (не полный вывод):

test@testPC:~$ apt-cache show postgresql
Package: postgresql
Architecture: all
Version: 12+214ubuntu0.1
Priority: optional
Section: database
Source: postgresql-common (214ubuntu0.1)
Origin: Ubuntu

apt-cache show postgresql полный вывод

test@testPC:~$ apt-cache show postgresql
Package: postgresql
Architecture: all
Version: 12+214ubuntu0.1
Priority: optional
Section: database
Source: postgresql-common (214ubuntu0.1)
Origin: Ubuntu
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Original-Maintainer: Debian PostgreSQL Maintainers <team+postgresql@tracker.debian.org>
Bugs: https://bugs.launchpad.net/ubuntu/+filebug
Installed-Size: 66
Depends: postgresql-12
Suggests: postgresql-doc
Filename: pool/main/p/postgresql-common/postgresql_12+214ubuntu0.1_all.deb
Size: 3924
MD5sum: 0b8d49f4e27427af323aa323ac2d564c
SHA1: 1458957f9632eed66247eeff6ecd64e9ba08e9ec
SHA256: 31c5fdb805618fadc6cc3deba741b4b69aa7c8addd25d761d06ede64c8d97732
SHA512: 929dfa95121e461135ddee93208d5e3f45ed8fa0ce65b2200157df02eadc40daa6f34279fe0503ea6ddf42de83f5efdd4547f0e9c83f46b3820277c343bd9c9d
Description-en: object-relational SQL database (supported version)
 This metapackage always depends on the currently supported PostgreSQL
 database server version.
 .
 PostgreSQL is a fully featured object-relational database management
 system.  It supports a large part of the SQL standard and is designed
 to be extensible by users in many aspects.  Some of the features are:
 ACID transactions, foreign keys, views, sequences, subqueries,
 triggers, user-defined types and functions, outer joins, multiversion
 concurrency control.  Graphical user interfaces and bindings for many
 programming languages are available as well.
Description-md5: bdff2d6e5b2a1dd00e72b3ed8729d9ac
Task: postgresql-server

Package: postgresql
Architecture: all
Version: 12+214
Priority: optional
Section: database
Source: postgresql-common (214)
Origin: Ubuntu
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Original-Maintainer: Debian PostgreSQL Maintainers <team+postgresql@tracker.debian.org>
Bugs: https://bugs.launchpad.net/ubuntu/+filebug
Installed-Size: 66
Depends: postgresql-12
Suggests: postgresql-doc
Filename: pool/main/p/postgresql-common/postgresql_12+214_all.deb
Size: 4004
MD5sum: 4a7e3f24b175497508026dee4039274f
SHA1: 5bfbc6c7dbe4cba091a4b0901355ad68ca25e69e
SHA256: 7e9419964a22dc062fd4a66d9f5baedd455eb908ddff575085d48daaeb54e586
Description-en: object-relational SQL database (supported version)
 This metapackage always depends on the currently supported PostgreSQL
 database server version.
 .
 PostgreSQL is a fully featured object-relational database management
 system.  It supports a large part of the SQL standard and is designed
 to be extensible by users in many aspects.  Some of the features are:
 ACID transactions, foreign keys, views, sequences, subqueries,
 triggers, user-defined types and functions, outer joins, multiversion
 concurrency control.  Graphical user interfaces and bindings for many
 programming languages are available as well.
Description-md5: bdff2d6e5b2a1dd00e72b3ed8729d9ac
Task: postgresql-server
[свернуть]

Напоминаю, что расшифровку названия пакета (214ubuntu0.1) можно посмотреть тут: Наименование версий пакетов в Ubuntu Linux

2. Добавим репозитарий на 13-ю версию PostgreSQL

Да, версия 12-я пакета, так как репозитарий на эту версию в систему добавлен. Это можно исправить — добавим руками информацию о 13й версии, добавим ссылку на новый репозитарий и сделаем импорт ключей, выполнив следующие команды:

sudo apt -y install vim bash-completion wget
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
echo "deb http://apt.postgresql.org/pub/repos/apt/ `lsb_release -cs`-pgdg main" |sudo tee /etc/apt/sources.list.d/pgdg.list

После этого обновляем список:

sudo apt update

И выполняем ту же команду apt-cache show:

test@testPC:~$ apt-cache show postgresql
Package: postgresql
Source: postgresql-common (223.pgdg20.04+1)
Version: 13+223.pgdg20.04+1
Architecture: all
Maintainer: Debian PostgreSQL Maintainers <team+postgresql@tracker.debian.org>
Installed-Size: 68
Depends: postgresql-13
Suggests: postgresql-doc
Priority: optional
Section: database

Теперь доступна тринадцатая версия. Но эти детали смотреть уже не будем.

3. Автономный пакет PostgreSQL

Можно скачать автономный пакет — такой, для установки которого не требуется интернет. Давайте тоже попробуем скачать такой.

Для поиска пакетов я пользуюсь сайтом pkgs.org, (https://pkgs.org/download/postgresql-12), выбираете свою версию (я выбрал 12ю для 20.04), на открывшейся странице есть ссылка на пакет с сайта postgresql.org: https://apt.postgresql.org/pub/repos/apt/pool/main/p/postgresql-12/postgresql-12_12.5-1.pgdg20.04+1_amd64.deb, его я скачал. 13-ю версию скачивать не стал, чтобы с дополнительными библиотеками не мучится.

Теперь этот пакет можно установить. Для этого нужно зайти (в терминале) в директорию со скачанным пакетом и запустить команду:

sudo dpkg -i postgresql-12_12.5-1.pgdg20.04+1_amd64.deb

У меня в системе появилась следующая ошибка:

test@testPC:~/Downloads$ sudo dpkg -i postgresql-12_12.5-1.pgdg20.04+1_amd64.deb
Selecting previously unselected package postgresql-12.
(Reading database ... 192910 files and directories currently installed.)
Preparing to unpack postgresql-12_12.5-1.pgdg20.04+1_amd64.deb ...
Unpacking postgresql-12 (12.5-1.pgdg20.04+1) ...
dpkg: dependency problems prevent configuration of postgresql-12:
 postgresql-12 depends on postgresql-client-12; however:
  Package postgresql-client-12 is not installed.
 postgresql-12 depends on postgresql-common (>= 182~); however:
  Package postgresql-common is not installed.
 postgresql-12 depends on libpq5 (>= 9.3~); however:
  Package libpq5 is not installed.

dpkg: error processing package postgresql-12 (--install):
 dependency problems - leaving unconfigured
Errors were encountered while processing:
 postgresql-12

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

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

sudo apt install -f

В моем случае появилось вот такое сообщение:

test@testPC:~/Downloads$ sudo apt install -f
Reading package lists... Done
Building dependency tree  	 
Reading state information... Done
Correcting dependencies... Done
The following additional packages will be installed:
  libpq5 postgresql-client-12 postgresql-client-common postgresql-common
Suggested packages:
  postgresql-doc-12 libjson-perl
The following NEW packages will be installed:
  libpq5 postgresql-client-12 postgresql-client-common postgresql-common
0 upgraded, 4 newly installed, 0 to remove and 0 not upgraded.
1 not fully installed or removed.
Need to get 1 355 kB of archives.
After this operation, 5 029 kB of additional disk space will be used.
Do you want to continue? [Y/n] 

Осталось согласиться — и доустановка пройдет успешно.

В рамках установки в данном случае тоже (помимо установки непосредственно сервера СУБД), был добавлен необходимый пользователь, инициализирован кластер БД. Проверим:

test@testPC:~/Downloads$ sudo su - postgres
postgres@testPC:~$ psql
psql (12.5 (Ubuntu 12.5-0ubuntu0.20.04.1))
Type "help" for help.

postgres=# select version()\gx
-[RECORD1 ]-----------------------------------------------------------------------------------------
version | PostgreSQL 12.5 (Ubuntu 12.5-1.pgdg20.04+1) on x86_64-pc-linux-gnu, compiled by gcc (Ubuntu 9.3.0-17ubuntu1~20.04) 9.3.0, 64-bit

postgres=#

Как и в прошлый раз — всё работает!

Кстати, если кликнуть мышкой по этому пакету в графическом режиме — запуститься стандартный менеджер приложений Ubuntu. Если из него устанавливать — все доп.библиотеки будут установлены автоматически.

4. Пакет с расширением .RUN

Еще есть вот такой вариант установки — можно установить скачать и установить пакет с расширением .run. Я такой нашел на сайте компании EnterpriseDB: https://www.enterprisedb.com/downloads/postgresql

Я лично перешел в раздел 10.14 (нужно зарегистрироваться), там скачал файл с расширением .run для версии Linux x86-64. Пакет весит 137.5 МБ.

Чтобы такой пакет запустить — нужно сделать его исполняемым и запустить:

sudo chmod +x postgresql-10.15-1-linux-x64.run
sudo ./postgresql-10.15-1-linux-x64.run

В данном случае запускается графический мастер установки. Выполнив все его шаги, получаем установленный сервер PostgreSQL. Проверим:

sudo ./postgresql-10.15-1-linux-x64.runtest@testPC:~$ sudo su - postgres
$ pwd
/opt/PostgreSQL/10
$ cd bin
$ ./psql
Password:
psql.bin (10.15)
Type "help" for help.

Cannot read termcap database;
using dumb terminal settings.
postgres=# select version()\gx
-[RECORD1 ]------------------------------------------------------------------------------------------
version | PostgreSQL 10.15 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.4.7 20120313 (Red Hat 4.4.7-23), 64-bit

Есть тут некоторые «особенности», но суть понятна — можно скачать пакет и установить к себе на компьютер без интернета.

И еще один способ — можно скачать уже установленный пакет к себе на компьютер. Его не нужно устанавливать, скачал-распаковал-пользуешься. Я такой архив пару недель назад скачивал с сайта EnterpriseDB, но сейчас он недоступен. Странно. Поменяли, похоже на RUN.

5. Итоги

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

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


Be the first to comment

Leave a Reply

Ваш Mail не будет опубликован.


*