Установка PostgreSQL 16 на Debian 12 из репозитория
Введение
В этой статье Установка PostgreSQL из исходников я показывал установку PostgreSQL на сервер Debian из исходников. Но в большинстве случаев проще, быстрее и правильнее установить его с помощью пакетного менеджера из репозитория. У PostgreSQL есть свои публичные репозитории для разных пакетных менеджеров: apt, yum и zypp. Именно его мы и будем использовать в этой статье. Также я покажу особенности PostgreSQL установленного из официального репозитория PostgreSQL.
Поехали🚀
Установка PostgreSQL из репозитория
Добавление репозитория
Добавим официальный репозиторий PostgreSQL в систему:
$ sudo tee /etc/apt/sources.list.d/pgdg.list > /dev/null << EOF
deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main
EOF
Также импортируем ключ репозитория, для этого нам понадобятся утилиты curl и gpg и обновим кеш пакетов:
$ sudo apt install -y curl gpg
$ curl -fsSL https://www.postgresql.org/media/keys/ACCC4CF8.asc \
| sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/postgresql.gpg
$ sudo apt update
Установка
Из добавленного репозитория мы можем установить следующие версии PostgreSQL: postgresql-12, postgresql-13, postgresql-14, postgresql-15, postgresql-16.
В этой статье я покажу установку последней версии PostgreSQL:
$ sudo apt install -y postgresql-16
И уже можем проверить статус службы:
$ systemctl status postgresql@16-main.service
● postgresql@16-main.service - PostgreSQL Cluster 16-main
Loaded: loaded (/lib/systemd/system/postgresql@.service; enabled; preset: enabled)
Active: active (running) since Wed 2024-04-10 14:27:36 MSK; 2min 0s ago
Main PID: 3895 (postgres)
Tasks: 6 (limit: 2306)
Memory: 19.3M
CPU: 132ms
CGroup: /system.slice/system-postgresql.slice/postgresql@16-main.service
├─3895 /usr/lib/postgresql/16/bin/postgres -D /var/lib/postgresql/16/main -c config_file=/etc/postgresql/16/main/postgresql.conf
├─3896 "postgres: 16/main: checkpointer "
├─3897 "postgres: 16/main: background writer "
├─3899 "postgres: 16/main: walwriter "
├─3900 "postgres: 16/main: autovacuum launcher "
└─3901 "postgres: 16/main: logical replication launcher "
Особенности установки PostgreSQL из репозитория
Первую особенность я уже вам показал — это служба SystemD, которую не нужно создавать самому.
Теперь узнаем где расположились файлы PostgreSQL.
- Файлы сервера PostgreSQL находятся в каталоге /usr/lib/postgresql/16/bin/.
- Файлы кластера данных (каталог PGDATA) находится в каталоге /var/lib/postgresql/16/main.
- Основной конфиг лежит здесь — /etc/postgresql/16/main/postgresql.conf.
- А файл логов здесь — /var/log/postgresql/postgresql-16-main.log.
В процессе установки автоматически создался пользователь postgres с домашним каталогом /var/lib/postgresql.
Посмотрим, с какими параметрами был собран PostgreSQL:
$ pg_config --configure
'--build=x86_64-linux-gnu' '--prefix=/usr' '--includedir=${prefix}/include' '--mandir=${prefix}/share/man' '--infodir=${prefix}/share/info' '--sysconfdir=/etc' '--localstatedir=/var' '--disable-option-checking' '--disable-silent-rules' '--libdir=${prefix}/lib/x86_64-linux-gnu' '--runstatedir=/run' '--disable-maintainer-mode' '--disable-dependency-tracking' '--with-tcl' '--with-perl' '--with-python' '--with-pam' '--with-openssl' '--with-libxml' '--with-libxslt' '--mandir=/usr/share/postgresql/16/man' '--docdir=/usr/share/doc/postgresql-doc-16' '--sysconfdir=/etc/postgresql-common' '--datarootdir=/usr/share/' '--datadir=/usr/share/postgresql/16' '--bindir=/usr/lib/postgresql/16/bin' '--libdir=/usr/lib/x86_64-linux-gnu/' '--libexecdir=/usr/lib/postgresql/' '--includedir=/usr/include/postgresql/' '--with-extra-version= (Debian 16.2-1.pgdg120+2)' '--enable-nls' '--enable-thread-safety' '--enable-debug' '--enable-dtrace' '--disable-rpath' '--with-uuid=e2fs' '--with-gnu-ld' '--with-gssapi' '--with-ldap' '--with-pgport=5432' '--with-system-tzdata=/usr/share/zoneinfo' 'AWK=mawk' 'MKDIR_P=/bin/mkdir -p' 'PROVE=/usr/bin/prove' 'PYTHON=/usr/bin/python3' 'TAR=/bin/tar' 'XSLTPROC=xsltproc --nonet' 'CFLAGS=-g -O2 -fstack-protector-strong -Wformat -Werror=format-security -fno-omit-frame-pointer' 'LDFLAGS=-Wl,-z,relro -Wl,-z,now' '--enable-tap-tests' '--with-icu' '--with-llvm' 'LLVM_CONFIG=/usr/bin/llvm-config-16' 'CLANG=/usr/bin/clang-16' '--with-lz4' '--with-zstd' '--with-systemd' '--with-selinux' 'build_alias=x86_64-linux-gnu' 'CPPFLAGS=-Wdate-time -D_FORTIFY_SOURCE=2' 'CXXFLAGS=-g -O2 -fstack-protector-strong -Wformat -Werror=format-security'
Доступен сервер только на localhost и на порте 5432.
Проверка контрольных сумм в кластере по умолчанию не включена. Это можно проверить так:
$ sudo systemctl stop postgresql@16-main.service
$ sudo /usr/lib/postgresql/16/bin/pg_checksums --check -D /var/lib/postgresql/16/main
pg_checksums: ошибка: контрольные суммы в кластере не включены
Если понравилась статья, подпишись на мой канал в VK или Telegram .