
Полное удаление PostgreSQL в Linux требуется при смене версии, миграции на другую СУБД или очистке сервера после тестовой установки. Обычное удаление пакета часто оставляет каталоги с данными, конфигурацию и системного пользователя postgres, что мешает повторной установке и вводит в заблуждение при диагностике проблем.
PostgreSQL хранит файлы в нескольких местах: бинарные пакеты управляются менеджером пакетов, кластеры баз данных размещаются в каталогах вроде /var/lib/postgresql, конфигурация – в /etc/postgresql, журналы – в /var/log/postgresql. Без явной очистки этих путей на диске остаются гигабайты данных и устаревшие параметры.
Процесс удаления отличается в зависимости от дистрибутива Linux и способа установки. В Debian и Ubuntu используются apt и системные сервисы systemd, в CentOS и Rocky Linux – dnf или yum. Дополнительно нужно учитывать, был ли PostgreSQL установлен из репозитория дистрибутива, официального репозитория PGDG или собран вручную.
Перед началом рекомендуется проверить активные сервисы, наличие работающих процессов и точки монтирования с данными. Это позволяет избежать ошибок при удалении каталогов и понять, какие компоненты уже отсутствуют, а какие требуют ручной очистки.
Определение версии PostgreSQL и установленного дистрибутива

Перед удалением PostgreSQL нужно точно определить установленную версию сервера и тип Linux-дистрибутива. Это влияет на список пакетов, расположение каталогов с данными и способ остановки служб. Ошибка на этом этапе часто приводит к частичному удалению и оставшимся файлам.
Версия PostgreSQL определяется через бинарный файл сервера или клиентскую утилиту. Если сервер установлен и доступен в системе, используется команда psql —version или postgres —version. При наличии нескольких версий в системе команда может показать только одну из них, поэтому дополнительно проверяются установленные пакеты.
Тип дистрибутива определяется по файлу /etc/os-release. Он присутствует во всех современных системах и содержит идентификатор дистрибутива, его версию и семейство. Это позволяет понять, какой менеджер пакетов использовался и какие служебные каталоги применяются по умолчанию.
Для точного понимания конфигурации полезно сопоставить версию PostgreSQL, дистрибутив и менеджер пакетов. Это упрощает дальнейшее удаление и снижает риск пропуска компонентов.
| Параметр | Как определить | Практическое значение |
|---|---|---|
| Версия PostgreSQL | psql —version, postgres —version | Определяет имена пакетов и каталогов данных |
| Наличие нескольких версий | dpkg -l | grep postgresql / rpm -qa | grep postgresql | Позволяет удалить все версии без пропусков |
| Дистрибутив Linux | cat /etc/os-release | Определяет менеджер пакетов и структуру системы |
| Способ установки | Проверка источника пакетов | Показывает, где искать конфигурацию и данные |
Если PostgreSQL был установлен из официального репозитория PGDG, версии и пути могут отличаться от стандартных для дистрибутива. В этом случае важно зафиксировать точное название пакетов, так как они не всегда совпадают с системными.
Остановка служб PostgreSQL и проверка запущенных процессов

Перед удалением пакетов PostgreSQL требуется остановить все связанные службы и убедиться, что сервер базы данных не работает. Активные процессы могут блокировать файлы в каталогах данных и мешать корректному удалению.
В системах с systemd PostgreSQL обычно запускается как служба с именем postgresql или с указанием версии. Сначала нужно проверить состояние службы, затем выполнить остановку.
- systemctl status postgresql
- systemctl stop postgresql
- systemctl disable postgresql
В Debian и Ubuntu при установке нескольких версий службы могут иметь имена с номером версии. В этом случае остановка выполняется для каждой службы отдельно.
- systemctl stop postgresql@12-main
- systemctl stop postgresql@14-main
На системах без systemd используются другие средства управления службами. В старых дистрибутивах применяется service или прямой вызов init-скриптов.
- service postgresql stop
- /etc/init.d/postgresql stop
После остановки служб необходимо проверить, остались ли запущенные процессы сервера. Для этого используется поиск по имени процесса или системному пользователю.
- ps aux | grep postgres
- pgrep -a postgres
Если процессы продолжают работать, это может указывать на ручной запуск сервера или нестандартную установку. В таких случаях допустимо завершить процессы вручную после проверки, что они не используются другими приложениями.
- kill PID
- kill -9 PID
Завершающий шаг – повторная проверка списка процессов. Отсутствие процессов postgres подтверждает, что сервер полностью остановлен и система готова к удалению пакетов и каталогов.
Удаление пакетов PostgreSQL через менеджер пакетов

После остановки служб PostgreSQL выполняется удаление установленных пакетов. Команды зависят от семейства дистрибутива и источника установки. Сначала рекомендуется получить полный список пакетов, содержащих имя postgresql, чтобы исключить пропуски.
В Debian и Ubuntu используется менеджер пакетов apt. Для удаления сервера, клиентских утилит и дополнительных модулей применяется удаление с очисткой конфигурации.
apt purge postgresql postgresql-*
apt autoremove
Если в системе установлены пакеты из официального репозитория PGDG, их имена содержат номер версии. В таком случае удаление выполняется по точному имени пакета, например postgresql-14 или postgresql-client-13, чтобы убрать все связанные компоненты.
В CentOS, Rocky Linux и AlmaLinux применяется dnf или yum. Перед удалением полезно убедиться, что пакеты действительно установлены.
dnf list installed | grep postgresql
dnf remove postgresql postgresql-server postgresql-contrib
Если PostgreSQL был установлен из PGDG-репозитория, названия пакетов могут отличаться от стандартных. В этом случае удаляются все пакеты, начинающиеся с postgresql, включая версии и клиентские библиотеки.
После удаления рекомендуется повторно проверить список установленных пакетов. Отсутствие записей PostgreSQL подтверждает, что бинарные файлы и служебные компоненты удалены, и можно переходить к очистке каталогов с данными и конфигурацией.
Очистка каталогов с базами данных и журналами

После удаления пакетов PostgreSQL в системе остаются каталоги с кластерами баз данных и файлами журналов. Они не затрагиваются менеджером пакетов и занимают значительный объём диска. Перед удалением важно убедиться, что службы сервера не запущены и процессы postgres отсутствуют.
Основное хранилище данных PostgreSQL располагается в каталоге /var/lib/postgresql. В Debian и Ubuntu внутри него создаются подкаталоги с номерами версий, каждый из которых содержит отдельный кластер. Если база больше не нужна, весь каталог можно удалить целиком.
rm -rf /var/lib/postgresql
В дистрибутивах семейства RHEL данные чаще находятся в /var/lib/pgsql. При наличии нескольких версий следует проверить содержимое каталога и удалить все подкаталоги, относящиеся к PostgreSQL.
rm -rf /var/lib/pgsql
Файлы журналов сохраняются отдельно и продолжают существовать после удаления сервера. Стандартное расположение журналов – /var/log/postgresql или /var/lib/pgsql/data/log, в зависимости от дистрибутива и источника установки.
rm -rf /var/log/postgresql
Если журналы были перенесены в нестандартный каталог, его можно определить по старым конфигурационным файлам или поиском файлов с именами postgresql-*.log. Удаление этих каталогов завершает очистку данных и освобождает место на диске.
Удаление конфигурационных файлов и каталогов PostgreSQL
После очистки данных и журналов в системе остаются конфигурационные файлы PostgreSQL. Они не удаляются автоматически и могут повлиять на повторную установку сервера, так как содержат старые параметры портов, путей и сетевых ограничений.
В Debian и Ubuntu основная конфигурация хранится в каталоге /etc/postgresql. Внутри него создаются подкаталоги по версиям и именам кластеров, содержащие файлы postgresql.conf, pg_hba.conf и pg_ident.conf. При полном удалении серверов этот каталог можно удалить целиком.
rm -rf /etc/postgresql
В дистрибутивах CentOS, Rocky Linux и AlmaLinux конфигурация обычно размещается в /var/lib/pgsql внутри каталога данных или в /etc при установке из сторонних репозиториев. Рекомендуется проверить наличие файлов postgresql.conf и pg_hba.conf перед удалением.
rm -f /var/lib/pgsql/data/postgresql.conf
rm -f /var/lib/pgsql/data/pg_hba.conf
Если PostgreSQL устанавливался из репозитория PGDG, возможны дополнительные каталоги с конфигурацией, связанные с конкретной версией сервера. Их можно найти поиском по имени файла или каталога и удалить после проверки.
find /etc -name «postgresql*» -type d
Удаление всех конфигурационных каталогов завершает очистку настроек сервера и исключает влияние старых параметров при последующих установках.
Удаление пользователя и группы postgres из системы

После удаления пакетов, данных и конфигурации PostgreSQL остаётся системный пользователь postgres и одноимённая группа. Они создаются при установке сервера для запуска процессов и доступа к каталогам данных. Их присутствие после удаления сервера может мешать повторной установке или оставлять права на старые файлы.
Для удаления пользователя в Debian и Ubuntu применяется команда deluser. Она позволяет удалить пользователя вместе с домашним каталогом и почтовым spool, если это необходимо.
deluser —remove-home postgres
Для удаления группы используется delgroup. Если группа не используется другими пользователями, её можно удалить сразу после удаления пользователя.
delgroup postgres
В системах на базе RHEL, CentOS, Rocky Linux и AlmaLinux команды отличаются, используется userdel для пользователя и groupdel для группы. Флаг -r удаляет домашний каталог и почтовый spool.
userdel -r postgres
groupdel postgres
После выполнения команд рекомендуется проверить, что пользователя и группы больше нет в системе. Для этого используются команды id postgres и getent group postgres. Их отсутствие подтверждает, что системные учетные записи PostgreSQL полностью удалены.
Проверка системы на оставшиеся файлы и следы PostgreSQL

После удаления пакетов, данных, конфигурации и системного пользователя необходимо убедиться, что в системе не осталось файлов и следов PostgreSQL. Это предотвращает конфликты при повторной установке и освобождает место на диске.
Для проверки используйте поиск по имени файлов и каталогов, связанным с PostgreSQL:
- find / -name «postgresql*» -type d
- find / -name «postgres*» -type f
- locate postgresql | grep -v «/var/lib/apt»
Рекомендуется проверять стандартные пути:
- /var/lib/postgresql
- /var/lib/pgsql
- /etc/postgresql
- /var/log/postgresql
- /usr/lib/postgresql
Также стоит проверить наличие оставшихся процессов или сокетов:
- ps aux | grep postgres
- lsof | grep postgres
Если остаются файлы или каталоги, их следует удалить вручную с использованием rm -rf. После проверки можно быть уверенным, что PostgreSQL полностью удален из системы, включая все данные, конфигурации и временные файлы.
Вопрос-ответ:
Как узнать, какие версии PostgreSQL установлены в системе?
Для определения установленных версий PostgreSQL используйте команды psql —version или postgres —version. Если серверов несколько, можно проверить список пакетов через dpkg -l | grep postgresql на Debian/Ubuntu или rpm -qa | grep postgresql на CentOS и RHEL. Это позволяет точно определить версии, чтобы удалить все компоненты.
Можно ли удалить PostgreSQL без остановки сервера?
Удаление пакетов и данных при работающем сервере может привести к повреждению файлов и зависших процессов. Сначала необходимо остановить службу командой systemctl stop postgresql или service postgresql stop, затем проверить отсутствие процессов через ps aux | grep postgres. Только после этого можно удалять пакеты и каталоги.
Как полностью удалить все данные PostgreSQL, включая базы и журналы?
Данные хранятся в каталоге /var/lib/postgresql для Debian/Ubuntu или /var/lib/pgsql для RHEL-подобных систем. Журналы могут находиться в /var/log/postgresql или внутри каталога данных. Для удаления используйте rm -rf соответствующих каталогов, предварительно убедившись, что сервер остановлен и процессы отсутствуют.
Как удалить пользователя и группу postgres из системы?
После удаления пакетов и данных остаются системный пользователь и группа postgres. В Debian/Ubuntu используйте deluser —remove-home postgres и delgroup postgres. В CentOS и аналогичных дистрибутивах применяются userdel -r postgres и groupdel postgres. Это удаляет домашний каталог, права доступа и учетные записи.
Как убедиться, что после удаления PostgreSQL не осталось файлов и конфигурации?
Используйте команды поиска: find / -name «postgres*» для файлов и каталогов. Проверьте стандартные пути: /var/lib/postgresql, /var/lib/pgsql, /etc/postgresql, /var/log/postgresql. Также проверьте процессы через ps aux | grep postgres. Отсутствие файлов и процессов подтверждает, что PostgreSQL полностью удалён.
Как корректно удалить PostgreSQL с сохранением целостности системы?
Сначала необходимо остановить все службы PostgreSQL с помощью systemctl stop postgresql или service postgresql stop, а затем проверить отсутствие процессов через ps aux | grep postgres. После этого удаляются пакеты через apt purge postgresql* на Debian/Ubuntu или dnf remove postgresql* на RHEL-подобных системах. Завершающий шаг — очистка каталогов с данными, журналами и конфигурацией, чтобы не осталось файлов, которые могут блокировать повторную установку.
Что делать, если после удаления PostgreSQL остались файлы и пользователь postgres?
После удаления пакетов могут остаться каталоги /var/lib/postgresql, /var/log/postgresql и конфигурационные файлы в /etc/postgresql. Их следует удалить вручную с помощью rm -rf. Для удаления пользователя и группы используется deluser —remove-home postgres и delgroup postgres на Debian/Ubuntu или userdel -r postgres и groupdel postgres на CentOS/AlmaLinux. После этого проверяется, что процессы не запущены и все файлы удалены.
