Установка PostgreSQL 15 на Debian 13, 12, 11: полное руководство

PostgreSQL 15 — это мощная объектно-реляционная система управления базами данных. Она широко используется в веб-приложениях, аналитике и корпоративных системах. Версия 15 остаётся востребованной для проектов, где важна совместимость с расширениями или более медленный график обновления БД.

В этом руководстве я покажу два способа установки PostgreSQL 15 на Debian:

  1. Из официальных репозиториев Debian (только Debian 12)
  2. Из репозитория PostgreSQL (PGDG) (Debian 13, 11 и опционально Debian 12)
Релиз DebianPostgreSQL по умолчаниюpostgresql-15 в DebianРекомендуемый источник
Debian 13 (Trixie)17.x❌ НетPGDG репозиторий
Debian 12 (Bookworm)15.x✅ ДаDebian репозиторий
(или PGDG)
Debian 11 (Bullseye)13.x❌ НетPGDG репозиторий

⚠️ Важно: Используйте версионные пакеты (postgresql-15, postgresql-client-15), а не postgresql (который следует за веткой по умолчанию).


Оглавление

Предварительные требования

Перед установкой убедитесь, что:

  • Вы имеете права sudo (администратора)

⚠️ ВАЖНО: Проверьте права sudo перед установкой

Если вы не уверены, есть ли у вашего пользователя права администратора, выполните в терминале:

sudo whoami

Что делает: sudo — выполняет команду от имени суперпользователя; whoami — показывает имя текущего пользователя.

Ожидаемый вывод в терминале:

root

❌ Если выводит is not in the sudoers file — сначала пройдите наше руководство по настройке sudo.


Способ 1: Установка PostgreSQL 15 из репозиториев Debian (Debian 12)

Этот метод работает только на Debian 12 (Bookworm), где PostgreSQL 15 есть в официальных репозиториях.

Шаг 1: Обновите систему

sudo apt update && sudo apt upgrade -y

Шаг 2: Установите PostgreSQL 15

sudo apt install -y postgresql-15 postgresql-client-15

Что делает: Устанавливает сервер PostgreSQL 15 и клиентские утилиты (psql, pg_dump, pg_restore).

Шаг 3: Проверьте установку

psql --version
pg_lsclusters

Ожидаемый вывод:

psql (PostgreSQL) 15.18 (Debian 15.18-0+deb12u1)
Ver Cluster Port Status Owner    Data directory              Log file
15  main    5432 online postgres /var/lib/postgresql/15/main /var/log/postgresql/postgresql-15-main.log

Что означают поля:

  • Status: online — кластер работает
  • Port: 5432 — стандартный порт PostgreSQL
  • Owner: postgres — пользователь-администратор БД

Способ 2: Установка PostgreSQL 15 из репозитория PGDG (Debian 13, 11 и опционально Debian 12)

PGDG (PostgreSQL Global Development Group) предоставляет официальные пакеты PostgreSQL для Debian. Этот метод необходим на Debian 13 и 11, а на Debian 12 даёт более свежие минорные версии.

Шаг 1: Установите зависимости

sudo apt install -y ca-certificates curl

Шаг 2: Скачайте GPG-ключ PGDG

sudo install -d -m 0755 /usr/share/postgresql-common/pgdg
sudo curl -fsSLo /usr/share/postgresql-common/pgdg/apt.postgresql.org.asc https://www.postgresql.org/media/keys/ACCC4CF8.asc

Шаг 3: Добавьте репозиторий PGDG

(
    . /etc/os-release
    arch=$(dpkg --print-architecture)

    case "$VERSION_CODENAME" in
        trixie|bookworm|bullseye) ;;
        *) echo "Unsupported Debian version"; exit 1 ;;
    esac

    case "$arch" in
        amd64|arm64|ppc64el) ;;
        *) echo "Unsupported architecture: $arch"; exit 1 ;;
    esac

    printf '%s\n' \
        'Types: deb' \
        'URIs: https://apt.postgresql.org/pub/repos/apt' \
        "Suites: ${VERSION_CODENAME}-pgdg" \
        'Components: main' \
        "Architectures: ${arch}" \
        'Signed-By: /usr/share/postgresql-common/pgdg/apt.postgresql.org.asc' | sudo tee /etc/apt/sources.list.d/pgdg.sources > /dev/null
)

Шаг 4: Обновите список пакетов

sudo apt update

Шаг 5: Проверьте, что пакет postgresql-15 виден

apt-cache policy postgresql-15

Ожидаемый вывод (Debian 13):

postgresql-15:
  Installed: (none)
  Candidate: 15.18-1.pgdg13+1
  Version table:
     15.18-1.pgdg13+1 500
        500 https://apt.postgresql.org/pub/repos/apt trixie-pgdg/main amd64 Packages

Шаг 6: Установите PostgreSQL 15

sudo apt install -y postgresql-15 postgresql-client-15

Шаг 7: Проверьте установку

psql --version
pg_lsclusters

Ожидаемый вывод (PGDG):

psql (PostgreSQL) 15.18 (Debian 15.18-1.pgdg13+1)

Установка только клиентских инструментов

Если сервер БД находится на другой машине, можно установить только клиент:

sudo apt install -y postgresql-client-15

Проверка:

psql --version

Ожидаемый вывод: psql (PostgreSQL) 15.18


Управление кластером PostgreSQL

Debian управляет PostgreSQL через postgresql-common. Основные команды:

КомандаЧто делает
pg_lsclustersПоказать все кластеры (версия, порт, статус)
sudo systemctl status postgresql@15-mainСтатус кластера PostgreSQL 15
sudo systemctl restart postgresql@15-mainПерезапустить кластер
sudo systemctl reload postgresql@15-mainПерезагрузить конфигурацию (без остановки)
sudo journalctl -u postgresql@15-main -n 30Посмотреть последние 30 строк лога

Первые шаги с PostgreSQL

Шаг 1: Войдите в оболочку PostgreSQL от пользователя postgres

sudo -iu postgres psql

Шаг 2: Выполните базовые команды

\l          -- список баз данных
\du         -- список ролей (пользователей)
\q          -- выход

Шаг 3: Создайте пользователя и базу данных для приложения

sudo -iu postgres createuser --pwprompt appuser
sudo -iu postgres createdb -O appuser appdb

Что делает: Создаёт пользователя appuser (с запросом пароля) и базу данных appdb, владельцем которой является appuser.

Шаг 4: Проверьте подключение

psql -h 127.0.0.1 -U appuser -d appdb -c '\conninfo'

(введите пароль, созданный на предыдущем шаге)

Ожидаемый вывод:

You are connected to database "appdb" as user "appuser" on host "127.0.0.1" at port "5432".

Обновление PostgreSQL 15

Обновление Debian APT-версии

sudo apt update
sudo apt install --only-upgrade postgresql-15 postgresql-client-15 -y

Обновление PGDG-версии

sudo apt update
sudo apt install --only-upgrade postgresql-15 postgresql-client-15 -y

Решение типичных проблем

8.1 Ошибка: Unable to locate package postgresql-15 на Debian 13 или 11

Симптом: sudo apt install postgresql-15 не находит пакет.

Причина: Debian 13 и 11 не содержат PostgreSQL 15 в официальных репозиториях.

Пошаговое решение:

Используйте метод 2 (PGDG репозиторий).


8.2 Ошибка: PGDG source или signing key проблемы

Симптом: sudo apt update выдаёт ошибку ключа или недоступности репозитория.

Причина: Неправильный файл репозитория или повреждённый ключ.

Пошаговое решение:

Шаг 1: Проверьте файл репозитория:

cat /etc/apt/sources.list.d/pgdg.sources

Шаг 2: Убедитесь, что Suites: соответствует вашему кодовому имени:

  • Debian 13: trixie-pgdg
  • Debian 12: bookworm-pgdg
  • Debian 11: bullseye-pgdg

Шаг 3: Переустановите ключ:

sudo install -d -m 0755 /usr/share/postgresql-common/pgdg
sudo curl -fsSLo /usr/share/postgresql-common/pgdg/apt.postgresql.org.asc https://www.postgresql.org/media/keys/ACCC4CF8.asc
sudo apt update

8.3 Ошибка: Кластер PostgreSQL не запущен

Симптом: pg_lsclusters показывает down или stopped.

Причина: Сервис не запущен.

Пошаговое решение:

Шаг 1: Запустите кластер:

sudo systemctl start postgresql@15-main

Шаг 2: Проверьте логи:

sudo journalctl -u postgresql@15-main -n 30 --no-pager

Шаг 3: Включите автозапуск:

sudo systemctl enable postgresql@15-main

8.4 Ошибка: Не удаётся подключиться к серверу

Симптом: psql: error: connection to server on socket ... failed

Причина: PostgreSQL не запущен или неправильные настройки аутентификации.

Пошаговое решение:

Шаг 1: Проверьте, что сервер запущен:

pg_lsclusters

Шаг 2: Проверьте, что порт 5432 слушается:

sudo ss -tlnp | grep 5432

Шаг 3: Проверьте настройки pg_hba.conf (обычно в /etc/postgresql/15/main/pg_hba.conf).


8.5 Ошибка: Установлены только клиентские инструменты, а не сервер

Симптом: psql работает, но pg_lsclusters не найден или не показывает кластер.

Причина: Установлен только postgresql-client-15, а не postgresql-15.

Пошаговое решение:

Проверьте, какие пакеты установлены:

dpkg -l postgresql-15 postgresql-client-15

Если postgresql-15 не установлен — установите его:

sudo apt install -y postgresql-15

Удаление PostgreSQL 15

Шаг 1: Удалите кластер (с данными)

⚠️ Внимание: Эта команда удаляет ВСЕ данные базы данных кластера 15!

sudo pg_dropcluster --stop 15 main

Шаг 2: Удалите пакеты

sudo apt remove postgresql-15 postgresql-client-15
sudo apt autoremove

Шаг 3: Удалите репозиторий PGDG (если использовали)

sudo rm -f /etc/apt/sources.list.d/pgdg.sources
sudo apt update

Шаг 4: Удалите ключ (если не используется другими источниками)

sudo rm -f /usr/share/postgresql-common/pgdg/apt.postgresql.org.asc
sudo rmdir --ignore-fail-on-non-empty /usr/share/postgresql-common/pgdg

Шаг 5: Проверьте удаление

dpkg -l postgresql-15 postgresql-client-15 | grep '^ii' || echo "PostgreSQL 15 packages are no longer installed."

Чек-лист: что проверить после установки

  • [ ] PostgreSQL установлен: psql --versionpsql (PostgreSQL) 15.x
  • [ ] Кластер запущен: pg_lsclusters15 main ... online
  • [ ] Можно подключиться локально: sudo -iu postgres psql -c 'SELECT version();'
  • [ ] Создан пользователь для приложения: sudo -iu postgres createuser --pwprompt appuser
  • [ ] Создана база данных: sudo -iu postgres createdb -O appuser appdb
  • [ ] Подключение по TCP работает: psql -h 127.0.0.1 -U appuser -d appdb -c '\conninfo'

Часто задаваемые вопросы (FAQ)

Вопрос: Какая версия PostgreSQL в Debian 13 по умолчанию?
Ответ: Debian 13 (Trixie) содержит PostgreSQL 17. Для PostgreSQL 15 используйте PGDG репозиторий.

Вопрос: В чём разница между postgresql-15 и postgresql?
Ответ: postgresql-15 — фиксированная версия 15. postgresql — мета-пакет, который следует за версией по умолчанию в вашем репозитории (в Debian 13 это 17).

Вопрос: Нужно ли создавать пользователя postgres?
Ответ: Нет, он создаётся автоматически при установке.

Вопрос: Как разрешить удалённые подключения к PostgreSQL?
Ответ: Измените listen_addresses в postgresql.conf и добавьте правило в pg_hba.conf. Не забудьте настроить файрвол.

Вопрос: Как сделать резервную копию базы данных?
Ответ: pg_dump -U appuser -h localhost appdb > backup.sql


Заключение

Теперь PostgreSQL 15 установлен на вашем Debian. Вы можете использовать его для веб-приложений, аналитики или как надёжное хранилище данных.

Что дальше?

  • Настройте резервное копирование
  • Установите pgAdmin для управления через веб-интерфейс
  • Настройте репликацию для отказоустойчивости