归档:Hermes 破解
| 本文正在考虑删除! 理由 openSUSE 已经不再使用 Hermes,开发已于 2013 年停止。 请勿清空、合并或移动本文,或删除此通知。请参阅本文的页面和我们的删除策略以获取更多信息。 |
此页面提供了一些关于如何开始破解 Hermes 的提示。
如果您需要进一步的帮助(您可能需要 ;-)),请不要犹豫在 freenode 的 IRC 频道 #opensuse-boosters 中提问。
可能还有更多有用的信息,在开始破解 Hermes 时需要了解。如果您发现了它们,请将其添加到此页面或告诉我...
如何开始
Hermes 可以在 git checkout 中进行破解。要检出源代码,请运行
git clone https://github.com/openSUSE/hermes.git
要使用 Herminator,请确保已设置 HTTP 服务器,例如 Apache 或 lighttpd,以提供 Perl 脚本。
要使用 Starship,您需要一个 Ruby on Rails 环境。我们使用来自 openSUSE Tools 构建的“官方”Ruby 仓库。
还需要 perl-DBD-mysql 包。
创建数据库
要创建 Hermes 的数据库,使用 ruby on rails 迁移,因为它是在这方面的最强大的机制。即使您只想使用 Hermes 的非 Ruby 部分,您也需要使用 starship 创建数据库。
首先,在 mysql 中创建一个空数据库,例如,名为 hermes,如下所示,以 root 身份
mysql -e "create database hermes character set 'utf8'; grant all on hermes.* to hermes@localhost identified by 'hermes'; flush privileges;"
进入“starship”子目录
cd starship
检查 config/database.yml 并为您的环境设置正确的用户、主机和数据库名称(如果您想在生产环境中运行 hermes,请配置“production”环境);请注意,在某些系统上,您还需要将 MySQL socket 文件路径更改为 /var/run/mysql/mysql.sock 而不是 /var/lib/mysql/mysql.sock
您可以通过环境变量 RAILS_ENV来控制要使用的环境(以及设置),例如:
export RAILS_ENV=development
对于生产系统,使用
export RAILS_ENV=production
要实际创建和设置所有表,请调用
rake db:migrate
在 starship 目录中。就这样了。
注意:migration 20091125104613_change_gennotisent_default.rb 有问题。它应该将某些 datetime 字段的默认值设置为 '0'。不幸的是,这并没有发生。它仍然是 NULL,这阻止了 hermesgenerator 和 hermesworker 生成/发送任何消息。在修复此问题之前,您可以使用以下 SQL 代码片段来修复它
ALTER table notifications CHANGE generated generated datetime DEFAULT 0; ALTER table generated_notifications CHANGE sent sent datetime DEFAULT 0;
Starship 没有一些初始数据库内容可以工作。可以通过调用以下命令轻松创建这些内容
rake db:seed
Starship 中的身份验证
Hermes 当前知道三种身份验证方式
- 模拟,即用户是硬编码的
- ichain,使用 Novell iChain 身份验证
- 使用浏览器窗口的基本身份验证
要选择身份验证代码,请在 starship/config/environments/ 中设置环境变量,例如在 development.rb 中用于开发模式
# Authentication: # Starship can either authenticate against Novell iChain or use basic # auth, which can be be configured with various sources through the # webserver # Parameter: AUTHENTICATION # set this parameter to either # :simulate => means the user is hardcoded to termite # :ichain => iChain is used. # :off => basic auth AUTHENTICATION = :off
设置用户
由于您至少需要在 Starship 中需要一个用户,以下是如何创建它的方法
freitag@trixa:~/suse/git/hermes/starship> script/console
Loading development environment (Rails 2.3.8)
Loaded gui abstraction from .../abstraction.xml
Loaded starship config from config/starship.yml
>> p = Person.new
=> #<Person id: nil, email: nil, name: nil, jid: nil, stringid: nil, admin: false, hashed_password: nil, salt: nil>
>> p.email='hacker@opensuse.org'
=> "hacker@opensuse.org"
>> p.name='Heino Hack'
=> "Heino Hack"
>> p.stringid='heino'
=> "heino"
>> p.salt = Person.random_string(10)
=> "gMbLgpLPXg"
>> p.hashed_password = Person.encrypt('secret', p.salt)
=> "e81e3d8242e87979756bd94fc8ff8273b9ab11bb"
>> p.save
=> true
>> exit
freitag@trixa:~/suse/git/hermes/starship>
创建配置文件
Hermes 需要一个全局配置文件,放置在
/etc/hermes.conf
要创建它,请将 conf/hermes.conf.in 中的模板复制到 /etc 并根据您的设置进行调整。配置文件必须是有效的 Perl 代码,并且可以使用 Perl 解释器检查语法
kf@subbotin:~/hermes> perl -c /etc/hermes.conf /etc/hermes.conf syntax OK
一些重要的设置
- %LOG:建议设置 logpath 条目以进行日志记录,这将导致 Hermes 进程在路径中生成日志文件。
- $DB{'default'}:在此处指定您想要使用的数据库设置。
- $HerminatorDir:Herminator 的基本路径,当前从这里读取通知插件
- $OBSAPIBase:要使用的 openSUSE 构建服务的 API(如果需要)。
根据需要更改其他设置。
创建通知类型
安装后,可用通知类型的列表为空。它们会在首次使用时自动创建,因此无需显式创建它们。使用 Hermes 结账的顶级目录中的命令行工具 notifyHermes.pl 创建通知,例如使用
notifyHermes -o 'bla=foo, bar=baz' CheckHermes
调用 notifyHermes.pl -h 以获取帮助。