Sympa + PostgreSQL 安装:Upgrade::probe_db() 未找到表 user_table(Ubuntu Hardy)

Sympa + PostgreSQL 安装:Upgrade::probe_db() 未找到表 user_table(Ubuntu Hardy)

我在尝试在 Ubuntu Hardy 服务器上安装 Sympa 时遇到了问题。

该问题似乎与相关的 PostreSQL 数据库有关。

我遵循的步骤:

1)安装PostreSQL。

sudo apt-get install postgresql postgresql-client postgresql-contrib libpq-dev

2) 更新了 PostgreSQL 的管理员密码。PostgreSQL 为其“管理员”创建了两个帐户。一个是“数据库帐户”(用于登录 postgresql 本身),另一个是“linux 帐户”(我猜是用于在服务器上创建文件)。我像这样重置了数据库帐户的密码:

sudo su postgres -c psql
ALTER USER postgres WITH PASSWORD 'password';
\q

然后按通常的方式重置“linux账户”密码:

sudo passwd -d postgres
sudo su postgres -c passwd

3) 在 PostgreSQL 上启用密码访问。默认情况下,PostgreSQL 只允许您使用您的 Linux 名称登录。因此,如果您以用户“tim”的身份登录 Linux,则它只允许您以“tim”的身份进入数据库。我们想改变这一点,以便它要求您输入用户名和密码,这样您就可以以其他人的身份登录。

sudo nano /etc/postgresql/8.3/main/pg_hba.conf

在该文件上我更新了以下几行:

#local all all ident sameuser
local all all md5
#host all all 127.0.0.1/32 ident sameuser
host all all 127.0.0.1/32 md5
#host all all ::1/128 ident sameuser
host all all ::1/128 md5

4)现在是时候安装sympa了。我刚刚这样做了:

sudo apt-get install sympa

5) 我被提示安装许多 perl 包。我接受了这些建议。

6)然后出现一个对话框,我回答了 3 个问题:

  • 您将使用哪种类型的数据库?PostgreSQL
  • 您的数据库运行的主机名是什么?本地主机
  • sympa 用户密码是什么?输入密码(两次)
  • 数据库管理员密码是什么?输入步骤2中使用的密码)

此时安装程序显示以下信息:

/etc/sympa/sympa.conf file has been created
/etc/sympa/wwsympa.conf file has been created
 * Reloading system log daemon...         [ OK ] 
Upgrade::probe_db() Table user_table not found in database sympa
Upgrade::probe_db() Table subscriber_table not found in database sympa
Upgrade::probe_db() Table admin_table not found in database sympa
DBD::Pg::db do failed: ERROR:  permission denied to create database
Upgrade::probe_db() Failed to run script '/usr/lib/sympa/bin/create_db.Pg' : ERROR:  permission denied to create database

DBD::Pg::st execute failed: ERROR:  relation "user_table" does not exist
List::get_user_db() Unable to execute SQL statement "SELECT email_user AS email, gecos_user AS gecos, password_user AS password, cookie_delay_user AS cookie_delay, lang_user AS lang , attributes_user AS attributes FROM user_table WHERE email_user = '[email protected]' " : ERROR:  relation "user_table" does not exist

Language::SetLang() Language::SetLang(), missing locale parameter
Database sympa defined in sympa.conf has not the right structure or is unreachable. If you don't use any database, comment db_xxx parameters in sympa.conf
Sympa failed to prepare database.
dpkg: error processing sympa (--configure):
 subprocess post-installation script returned error exit status 1
Errors were encountered while processing:
 sympa
E: Sub-process /usr/bin/dpkg returned an error code (1)

但是,sympa 数据库和用户是在数据库上创建的 - 如果我这样做,我就会看到它们:

sudo su postgres -c psql
/du  (list of users contains sympa)
/l   (list of databases contains sympa)

看起来好像 sympa 安装程序无法连接到 posgre,因此它找不到所需的表……然后将其重新解释为“数据库丢失”错误。

我不知道如何追踪此错误。如能提供任何指点,我将不胜感激。

答案1

尝试不重置 psql 数据库用户的密码。

根据http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=440109#27,这样就修复了该问题。

答案2

我知道这是一个老问题,但是我刚刚在安装了 Sympa 6.1.17~dfsg-1 的 ubuntu 14.04 上遇到了同样的错误。

我发现手动运行脚本是有效的。

     sudo apt-get install sympa
     # errors happen
     psql -U postgres #or some superuser
     drop database sympa;
     \i /usr/lib/sympa/bin/create_db.Pg
     \q
     sudo dpkg-reconfigure sympa

然后,在重新配置期间,假设您想再次设置数据库,但这次它会找到预期的表,因此它不会再次尝试运行该脚本。

答案3

Sympa 与 PostgreSQL 配合得很好(在 5.3 和 6.1 上都进行了测试)。它只在 Upgrade.pm 模块中存在一些问题,因为 PostgreSQL(更准确地说是它的 Perl 模块)返回的表名以架构为前缀,因此表名比较失败。我已经提交了一个带有补丁的 bug

答案4

Sympa 仅完全支持 MySQL 和 Sendmail(至少 Hardy 存储库中的版本支持)。

尝试使用其他配置(即 PosgreSQL + PostFix)来安装它,您或多或少需要自己动手...准备修改 perl 文件并(可能)在某个时候重新编译它。

相关内容