Установка сервера Postgresql постоянно завершает неудачей из-за ошибки postgresql-common.

Вопрос или проблема

Установка сервера postgresql в Ubuntu 12.04 завершается неудачей.
Похоже, это связано с некорректной конфигурацией пакета postgresql-common.
Я удалил все пакеты, связанные с postgresql, и попытался переустановить только пакет postgresql-common. Ошибка все еще возникала.

Ошибка:

$ sudo apt-get install postgresql-common
Чтение списков пакетов... Готово
Формирование древовидной зависимости       
Чтение информации о состоянии... Готово
Следующие НОВЫЕ пакеты будут установлены:
  postgresql-common
0 обновлено, 1 новый установлен, 0 удалено и 0 не обновлено.
Требуется загрузить 0 B/96.5 kB архивов.
После этой операции будет использовано 442 kB дополнительного дискового пространства.
Предварительная конфигурация пакетов ...
Выбор ранее не выбранного пакета postgresql-common.
(Чтение базы данных ... 176855 файлов и каталогов в настоящее время установлено.)
Распаковка postgresql-common (из .../postgresql-common_129ubuntu1_all.deb) ...
Добавление 'diversion of /usr/bin/pg_config to /usr/bin/pg_config.libpq-dev by postgresql-common'
Обработка триггеров для ureadahead ...
Обработка триггеров для man-db ...
Настройка postgresql-common (129ubuntu1) ...
adduser: Пользователь `postgres' не существует.
dpkg: ошибка при обработке postgresql-common (--configure):
 подпроцесс установленного сценария пост-установки завершился с кодом ошибки 1
При обработке ошибок возникли:
 postgresql-common
E: Подпроцесс /usr/bin/dpkg вернул код ошибки (1)

Есть идеи, как это преодолеть/решить?

Примечание:

  1. Я обновил и попробовал снова, та же ошибка возникает.
  2. Я удалил пакеты, связанные с postgresql, и попытался установить как postgresql-8.4, так и postgresql-9.1, в обоих случаях установка не удалась из-за зависимости от пакета postgresql-common.

Проблема заключалась в том, что пользователь postgres не создавался. (Похоже, это ошибка в сценариях конфигурации пакета, но не уверен) Я затем создал пользователя вручную, используя:

sudo useradd -r -s /bin/false postgres

Эта команда предназначена для создания пользователя без домашнего каталога. (Ссылка)

После этого я попробовал установить снова, и установка прошла успешно, без каких-либо проблем.

Примечание:
Некоторые ребята в канале IRC Ubuntu помогли мне с решением.

Обновление:

После перезапуска сервер postgresql стал недоступен, поэтому я попытался перезапустить сервер postgresql и получил следующую ошибку:

$ sudo service postgresql restart
[sudo] пароль для пользователя: 
 * Перезапуск сервера базы данных PostgreSQL 8.4                                     
 * Сервер PostgreSQL не удалось запустить. Пожалуйста, проверьте журнал:
2014-04-03 09:54:22 IST FATAL:  не удалось создать файл блокировки "/var/run/postgresql/.s.PGSQL.5432.lock": Доступ запрещен
[ошибка]

Я решил это, отредактировав файл postgresql.conf. Нам нужно найти строку, которая начинается с unix_socket_directory, и изменить ее следующим образом:

unix_socket_directory='/tmp'

Теперь запустите сервер postgresql, используя:

sudo service postgresql start

Проблема была в том, что

каталог по умолчанию для файлов блокировки в Ubuntu был изменен на
/var/run/postgresql, который не имеет прав на запись для всех пользователей. Однако простое
изменение прав на запись в этом каталоге не сработает; они будут
сброшены, когда выполняется сценарий инициализации по умолчанию.

Ссылка: http://eclecticquill.com/2013/02/26/postgresql-fails-to-start-on-ubuntu-12-10/

Получил больше информации из этого ссылки:

Но если вы пытаетесь запустить экземпляр сервера PostgreSQL
от имени своего локального пользователя, вам нужно убедиться, что каталог unix socket
доступен для записи пользователю, который владеет процессом сервера PostgreSQL. Попробуйте:

unix_socket_directory=’/tmp’

Вкратце:

Мы должны были сделать это, потому что мы создали пользователя postgres вручную.

Ответ или решение

Установка PostgreSQL на Ubuntu 12.04: Решение проблемы с пакетом postgresql-common

Установка серверной базы данных PostgreSQL на Ubuntu 12.04 может вызвать ряд проблем, особенно если вы сталкиваетесь с ошибками, связанными с конфигурацией пакета postgresql-common. В этой статье вы найдете подробное решение, основанное на недавно встреченной ошибке, когда установка не удается из-за отсутствия пользователя postgres.

Описание проблемы

Во время попытки установки PostgreSQL команда apt-get возвращает следующую ошибку:

adduser: The user `postgres' does not exist.
dpkg: error processing postgresql-common (--configure):
 subprocess installed post-installation script returned error exit status 1

Это говорит о том, что во время конфигурации пакета postgresql-common происходит ошибка из-за отсутствия системного пользователя postgres. Эта проблема может возникать при удалении и повторной установке пакетов PostgreSQL.

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

Чтобы устранить проблему, выполните следующие шаги:

  1. Создание пользователя postgres:
    Запустите следующую команду для создания системного пользователя postgres:

    sudo useradd -r -s /bin/false postgres

    Этот параметр создает пользователя без домашнего каталога, что подходит для системного пользователя, который не требует прямого входа в систему.

  2. Повторная установка postgresql-common:
    После успешного создания пользователя попробуйте снова установить пакет postgresql-common:

    sudo apt-get install postgresql-common

    Если все прошло успешно, вы сможете продолжить установку PostgreSQL.

  3. Проблемы с запуском сервера:
    После успешной установки может возникнуть еще одна проблема — сервер PostgreSQL не запускается. Попробуйте перезапустить сервер командой:

    sudo service postgresql restart

    Если вы столкнетесь с ошибкой, такой как:

    FATAL:  could not create lock file "/var/run/postgresql/.s.PGSQL.5432.lock": Permission denied

    Это свидетельствует о проблемах с правами доступа к директории для блокировочных файлов.

  4. Изменение конфигурации:
    В этом случае необходимо изменить файл конфигурации postgresql.conf. Найдите строку, начинающуюся с unix_socket_directory, и измените ее на:

    unix_socket_directory='/tmp'

    Это разрешит проблемы с правами доступа, так как директория /tmp имеет необходимые разрешения.

  5. Запуск PostgreSQL:
    После внесения изменений попробуйте запустить сервер снова:

    sudo service postgresql start

Заключение

Следуя изложенным шагам, вы сможете успешно установить и запустить сервер PostgreSQL на Ubuntu 12.04, даже если возникли проблемы с отсутствием пользователя postgres. Важно помнить, что такую ситуацию можно избежать в будущем, проверяя статусы пользователей и прав доступа перед установкой.

Если у вас возникли дополнительные вопросы или проблемы, не стесняйтесь обращаться к сообществу или искать помощь на форумах, таких как Stack Overflow или сервисе IRC для Ubuntu.

Оцените материал
Добавить комментарий

Капча загружается...