由于 postgresql-common 错误,Postgresql 服务器安装不断失败

由于 postgresql-common 错误,Postgresql 服务器安装不断失败

在 Ubuntu 12.04 中安装 postgresql 服务器失败。这似乎是由于 postgresql-common 包配置不完整造成的。我清除了所有与 postgresql 相关的包,尝试仅重新安装 postgresql-common 包。仍然出现错误。

错误是:

$ sudo apt-get install postgresql-common
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following NEW packages will be installed:
  postgresql-common
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 0 B/96.5 kB of archives.
After this operation, 442 kB of additional disk space will be used.
Preconfiguring packages ...
Selecting previously unselected package postgresql-common.
(Reading database ... 176855 files and directories currently installed.)
Unpacking postgresql-common (from .../postgresql-common_129ubuntu1_all.deb) ...
Adding 'diversion of /usr/bin/pg_config to /usr/bin/pg_config.libpq-dev by postgresql-common'
Processing triggers for ureadahead ...
Processing triggers for man-db ...
Setting up postgresql-common (129ubuntu1) ...
adduser: The user `postgres' does not exist.
dpkg: error processing postgresql-common (--configure):
 subprocess installed post-installation script returned error exit status 1
Errors were encountered while processing:
 postgresql-common
E: Sub-process /usr/bin/dpkg returned an error code (1)

有什么想法可以克服/解决这个问题吗?

注意:

  1. 我更新并再次尝试,但出现同样的错误。
  2. 我清除了 postgresql 相关的软件包并尝试安装和,postgresql-8.4postgresql-9.1两种情况下都因对软件包的依赖而失败postgresql-common

答案1

问题是postgres没有创建用户。(看起来像是包配置脚本的错误,但不确定)然后我使用以下命令手动创建了用户:

sudo useradd -r -s /bin/false postgres

上述命令是创建一个用户,没有主目录。(礼貌

之后我尝试再次安装,并且成功了,没有任何问题。

注意:
Ubuntu IRC 频道的一些人帮助我找到了解决方案。

更新:

重启后postgresql服务器无法访问,因此尝试重启postgresql服务器,但出现以下错误:

$ sudo service postgresql restart
[sudo] password for username: 
 * Restarting PostgreSQL 8.4 database server                                     
 * The PostgreSQL server failed to start. Please check the log output:
2014-04-03 09:54:22 IST FATAL:  could not create lock file "/var/run/postgresql/.s.PGSQL.5432.lock": Permission denied
[fail]

通过编辑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 服务器实例,则需要确保拥有 PostgreSQL 服务器进程的用户可写入 unix 套接字目录。尝试:

unix_socket_directory='/tmp'

简而言之:

我们必须这样做,因为我们postgres手动创建了用户。

相关内容