Несколько дней назад опубликовал статью об установке PostgreSQL из исходных кодов. Очень интересный способ, с его помощью можно установить самую последнюю версию (14-ю). Или самому какие-нибудь изменения внести в PostgreSQL и собрать.
Но есть и проще способ. Он является рекомендуемым — установка СУБД с помощью готовых пакетов под ваш дистрибутив Linux. В таком случае будет легче поддерживать и обновлять PostgreSQL. И процесс установки проходит намного проще.
Поэтому посмотрим, как установить PostgreSQL из пакетов.
Что будет в этот раз:
- Самый Простой Способ
- Добавим репозитарий на 13-ю версию PostgreSQL
- Автономный пакет PostgreSQL
- Пакет с расширением .RUN
- Итоги
Так как у меня 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
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 из официальных пакетов для вашего дистрибутива является предпочтительной.
Leave a Reply