我在尝试在 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 文件并(可能)在某个时候重新编译它。