PostgreSQL по умолчанию доступен в стандартных репозиториях во всех версиях Ubuntu. Однако Ubuntu создает «снимки» конкретной версии PostgreSQL, которая затем поддерживается на протяжении всего срока службы этой версии Ubuntu. Другие, более старые или более новые версии PostgreSQL доступны в репозитории самого PostgreSQL.
Если версия, включенная в вашу версию Ubuntu, не та, которая вам нужна, вы можете использовать репозиторий PostgreSQL Apt. Этот репозиторий будет интегрироваться с вашими обычными системами и управлением исправлениями, а также предоставлять автоматические обновления для всех поддерживаемых версий PostgreSQL на протяжении всего срока поддержки PostgreSQL.
Репозиторий PostgreSQL Apt на момент написания статьи поддерживает текущие версии Ubuntu:
- mantic (23.10, non-LTS)
- lunar (23.04, non-LTS)
- jammy (22.04, LTS)
- focal (20.04, LTS)
на следующих архитектурах:
- amd64
- Arm64 (только версии LTS)
- ppc64el (только версии LTS)
Чтобы использовать репозиторий PostgreSQL apt, необходимо выполнить следующие действия:
1. Создать конфигурацию файлового репозитория:
sudo sh -c 'echo "deb https://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
2. Импортировать ключ подписи репозитория:
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
Если получаем предупреждение, типа
Warning: apt-key is deprecated. Manage keyring files in trusted.gpg.d instead (see apt-key(8)).
то исправляем, т.е. помещаем ключ в trusted.gpg.d (как описано в этой статье)
apt-key export ACCC4CF8 | sudo gpg --dearmour -o /etc/apt/trusted.gpg.d/postgresql.gpg
3. Обновим списки пакетов:
sudo apt-get update
4. Установим последнюю версию PostgreSQL (на момент написания статьи версию 16.2). Если нужна конкретная версия, то нужно задать конкретную версию, например «postgresql-12» или другую вместо «postgresql»:
sudo apt-get -y install postgresql
Дополнительную информацию о репозитории apt, включая ответы на частые вопросы, см. PostgreSQL Apt Repository (на Английском языке)
Посмотреть статус, установленного PostgreSQL можно командой
$ sudo systemctl status postgresql ● postgresql.service - PostgreSQL RDBMS Loaded: loaded (/lib/systemd/system/postgresql.service; enabled; vendor preset: enabled) Active: active (exited) since Wed 2024-04-10 19:19:19 UTC; 30s ago Main PID: 3447 (code=exited, status=0/SUCCESS) CPU: 2ms
Всё, PostgreSQL установлен и готов к работе. Можно создавать базы данных.
Postgres группирует базы данных в “кластеры”, каждый из которых представляет собой именованную коллекцию баз данных, разделяющих конфигурацию и расположение данных и работающих на одном экземпляре сервера со своим собственным TCP-портом.
После того, как вы установили сервер PostgreSQL с помощью apt-get install postgresql
, он уже настроен и запущен, поэтому запуск initdb
не является необходимыми и фактически противоречат тому, что уже было настроено. При запуске вручную initdb
вы получите два кластера postgres.
Если вам нужен только один экземпляр Postgres, установка включает кластер с именем “main”, поэтому вам не нужно запускать initdb
для его создания.
Пакеты postgresql для Debian и Ubuntu предоставляют команду с именем pg_createcluster, которая находится в /usr/bin
и которую вы можете вызвать, если вам нужно создать новый кластер. Под капотом эта команда будет вызвана initdb
с правильными параметрами. Конечный пользователь не должен вызывать initdb
напрямую, вот почему она не включена в PATH
. Существуют также другие команды, такие как pg_dropluster и pg_ctlcluster, которые заменяют способы администрирования неупакованного экземпляра PostgreSQL.
Посмотреть, где находится кластер main можно командой
$ sudo su - postgres -c "psql -c 'SHOW data_directory;'"
data_directory ----------------------------- /var/lib/postgresql/16/main (1 строка)