Вопрос или проблема
Установка сервера 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)
Есть идеи, как это преодолеть/решить?
Примечание:
- Я обновил и попробовал снова, та же ошибка возникает.
- Я удалил пакеты, связанные с 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.
Решение проблемы
Чтобы устранить проблему, выполните следующие шаги:
-
Создание пользователя
postgres
:
Запустите следующую команду для создания системного пользователяpostgres
:sudo useradd -r -s /bin/false postgres
Этот параметр создает пользователя без домашнего каталога, что подходит для системного пользователя, который не требует прямого входа в систему.
-
Повторная установка
postgresql-common
:
После успешного создания пользователя попробуйте снова установить пакетpostgresql-common
:sudo apt-get install postgresql-common
Если все прошло успешно, вы сможете продолжить установку PostgreSQL.
-
Проблемы с запуском сервера:
После успешной установки может возникнуть еще одна проблема — сервер PostgreSQL не запускается. Попробуйте перезапустить сервер командой:sudo service postgresql restart
Если вы столкнетесь с ошибкой, такой как:
FATAL: could not create lock file "/var/run/postgresql/.s.PGSQL.5432.lock": Permission denied
Это свидетельствует о проблемах с правами доступа к директории для блокировочных файлов.
-
Изменение конфигурации:
В этом случае необходимо изменить файл конфигурацииpostgresql.conf
. Найдите строку, начинающуюся сunix_socket_directory
, и измените ее на:unix_socket_directory='/tmp'
Это разрешит проблемы с правами доступа, так как директория
/tmp
имеет необходимые разрешения. -
Запуск PostgreSQL:
После внесения изменений попробуйте запустить сервер снова:sudo service postgresql start
Заключение
Следуя изложенным шагам, вы сможете успешно установить и запустить сервер PostgreSQL на Ubuntu 12.04, даже если возникли проблемы с отсутствием пользователя postgres
. Важно помнить, что такую ситуацию можно избежать в будущем, проверяя статусы пользователей и прав доступа перед установкой.
Если у вас возникли дополнительные вопросы или проблемы, не стесняйтесь обращаться к сообществу или искать помощь на форумах, таких как Stack Overflow или сервисе IRC для Ubuntu.