MeeGo本地OBS搭建步骤

梧桐芭蕉 2012-01-05 02:16:39
主要参考文章:

http://blog.csdn.net/forestarmy

http://blog.chinaunix.net/space.php?uid=25153965&do=blog&id=160561

1、安装OpenSUSE 11.4

2、打开防火墙的一些端口,以使能SSH等:
copy to clipboardprint?

1. # vi /ete/sysconfig/Susefirewall2
2. FW_SERVICES_EXT_TCP="ssh 445 139 389 telnet 80 81 82 "
3. FW_SERVICES_EXT_UDP="137 138 "
4. # rcSuSEfirewall2 restart
3、搭建OBS

obs(opensuse build system)是meego源码编译的重要工具,也可以说是必备工具,有了它我们可以方便的对源码中各个包进行编译,进而做出meego镜像,所以搭建一个自己的obs系统是meego开发的重要部分。
view plaincopy to clipboardprint?

1. cd /etc/zypp/repos.d/;
2. wget http://download.opensuse.org/repositories/openSUSE:/Tools/openSUSE_11.4/openSUSE:Tools.repo
3. zypper ref

安装obs-server和相关的包

view plaincopy to clipboardprint?

1. zypper in obs-server obs-signd obs-utils createrepo nfs-client obs-api memcached lighttpd

设置数据库

默认开机开启:
copy to clipboardprint?

1. chkconfig --add mysql
2. rcmysql start
注意,chkconfig --add mysql可能会失败:

linux-ubai:/obs # chkconfig --level 35 mysql on
insserv: FATAL: service network is missed in the runlevels 2 to use service mysql
insserv: exiting now!
/sbin/insserv failed, exit code 1

解决办法是,将"network"的level2打开:chkconfig --level 2 network on。
使用系统提供的工具安装数据库:
view plaincopy to clipboardprint?

1. /usr/bin/mysql_secure_installation

在这里可以输入自己数据库密码,默认是空的

创建数据库:
view plaincopy to clipboardprint?

1. mysql -u root -p
2. mysql> create database api_production;
3. mysql> create database webui_production;

将obs的用户信息加到数据库中:
view plaincopy to clipboardprint?

1. GRANT all privileges
2. ON api_production.*
3. TO 'obs'@'%', 'obs'@'localhost' IDENTIFIED BY 'obspasswd';
4. GRANT all privileges
5. ON webui_production.*
6. TO 'obs'@'%', 'obs'@'localhost' IDENTIFIED BY 'obspasswd';
7. FLUSH PRIVILEGES;

在这里设置obs的密码:obspasswd
为了使用数据库,需要配置OBS:
view plaincopy to clipboardprint?

1. vi /srv/www/obs/api/config/database.yml
2. #change the production section
3. production:
4. adapter: mysql
5. database: api_production
6. username: obs
7. password: obspasswd

view plaincopy to clipboardprint?

1. vi /srv/www/obs/webui/config/database.yml
2. #change the production section
3. production:
4. adapter: mysql
5. database: webui_production
6. username: obs
7. password: obspasswd

填充数据库:
view plaincopy to clipboardprint?

1. cd /srv/www/obs/api/
2. RAILS_ENV="production" rake db:setup
3.
4. cd /srv/www/obs/webui/
5. RAILS_ENV="production" rake db:setup

设置lighttpd

1. 网页形式显现出来
2.
view plaincopy to clipboardprint?
1. # vi /etc/lighttpd/lighttpd.conf
2. include_shell "cat /etc/lighttpd/vhosts.d/*.conf"
3. vi /etc/lighttpd/vhosts.d/obs.conf
4. $SERVER["socket"] == ":80" {
5. rails_app = "webui"
6. rails_root = "/srv/www/obs/webui"
7. rails_procs = 3
8. # production/development are typical values here
9. rails_mode = "production"
10. log_root = "/srv/www/obs/webui/log"
11. include "vhosts.d/rails.inc"
12. }
13. $SERVER["socket"] == ":81" {
14. rails_app = "api"
15. rails_root = "/srv/www/obs/api"
16. rails_procs = 3
17. # production/development are typical values here
18. rails_mode = "production"
19. log_root = "/srv/www/obs/api/log"
20.
21. include "vhosts.d/rails.inc"
22. }
23. $SERVER["socket"] == ":82" {
24. server.name = "192.168.129.140" # IP地址改成自己服务器的地址,比如“192.168.129.140”
25. server.document-root = "/srv/obs/repos/"
26. dir-listing.activate = "enable"
27. }
3.
view plaincopy to clipboardprint?
1. # vi /etc/lighttpd/modules.conf
2. server.modules = (
3. "mod_access",
4. # "mod_alias",
5. # "mod_auth",
6. # "mod_evasive",
7. # "mod_redirect",
8. "mod_rewrite",
9. # "mod_setenv",
10. # "mod_usertrack",
11. )
12.
13. ##
14. ## mod_magnet
15. ##
16. include "conf.d/magnet.conf"
17.
18. ##
19. ## FastCGI (mod_fastcgi)
20. ##
21. include "conf.d/fastcgi.conf"

1. 服务器地址确认,修改相关文件的服务器地址:

view plaincopy to clipboardprint?
1. # vi /srv/www/obs/webui/config/environments/production.rb
2. FRONTEND_HOST = "192.168.129.140"
3. FRONTEND_PORT = 81
4. FRONTEND_PROTOCOL = 'http'
5. BUGZILLA_HOST = nil
6. DOWNLOAD_URL = "http://192.168.129.140:82"
7. ICHAIN_MODE = "off"
8. BASE_NAMESPACE = nil
9. # vi /srv/www/obs/api/config/environments/production.rb
10. SOURCE_HOST = "192.168.129.140"

1. 设置服务器开机启动选项
view plaincopy to clipboardprint?
1. chkconfig --add memcached lighttpd obsapidelayed obswebuidelayed
2. chkconfig --add obsrepserver obssrcserver obsscheduler obsdispatcher obspublisher obswarden obssigner

修改网页使用权限
view plaincopy to clipboardprint?

1. chown -R lighttpd.lighttpd /srv/www/obs/{api,webui}

配置obs服务器
view plaincopy to clipboardprint?

1. # vi /usr/lib/obs/server/BSConfig.pm
2.
3. my $hostname = '192.168.129.140';
4. our $repodownload = "http://$hostname:82/";

启动obs服务器
view plaincopy to clipboardprint?

1. # rcmemcached start
2. # rclighttpd start
3. # rcobsapidelayed start
4. # rcobswebuidelayed start

注意:如果rcobsapidelayed start报错:
/srv/www/obs/api/lib/custom_logger.rb:7:in `format_message': undefined method `[]' for #<NoMethodError:0xb675a984> (NoMethodError)



from /srv/www/obs/api/script/delayed_job.api:7

重启服务器这个问题就消失。

这里就可以在网页上打开我们的obs了(http://192.168.129.140/), 80端口是主界面,81端口是接口,82端口是仓库(现在还没任何数据产生)

如果访问82端口时碰到HTTP 404错误,需要做如下操作:

# mkdir /srv/obs/repos

# chown -R obsrun:obsrun /srv/obs/repos

4、搭建客户端

准确的说,obs-worker也属于obs服务器的一部分,我们在使用obs的时候是不会去操作它的,它只是服务器上的用于实现它工作的工具.
安装obs-worker及相关的工具:
view plaincopy to clipboardprint?

1. 1.zypper in obs-worker qemu-svn mount-static bash-static

修改服务器IP地址,是它只想我们所在的服务器:
view plaincopy to clipboardprint?

1. # vi /etc/sysconfig/obs-worker
2. OBS_SRC_SERVER="'192.168.129.140:5352"
3. OBS_REPO_SERVERS="'192.168.129.140:5252"


开机默认启动obs-worker:
view plaincopy to clipboardprint?

1. chkconfig --add obsworker
2. rcobsworker start

注意:如果rcobsworker start 报错:

chmod: cannot access `bs_worker': No such file or directory

重启服务器后这个问题就消失了。

5、导入MeeGo基础数据
view plaincopy to clipboardprint?

1. mkdir -p /obs/imports
2. mkdir -p /obs/build
3. ln -s /obs/build /srv/obs/build

想要编译修改后的meego源码包,我们必须先把基础的包全部预先存放在obs服务器上。obs会根据依赖去调用这些包。这里使用脚本去完成这些工作会更方便:

修改调度器:

对于MeeGo1.2,其arch是armv7hl,对应的调度器arch是armv8el:

# vi /etc/sysconfig/obs-server

OBS_SCHEDULER_ARCHITECTURES="i586 armv5el armv8el"

view plaincopy to clipboardprint?

1. wget http://stskeeps.subnetmask.net/meego/import-meego-release.sh
2. mv import-meego-release.sh /usr/sbin/
3. chmod +x /usr/sbin/import-meego-release.sh

注意,这个import-meego-release.sh可能需要做修改。比如用MeeGo1.2时,需要用armv7hl/armv8el;并且里面的IP地址需要改成服务器的IP。

下载Meego1.2的prjconf:

view plaincopy to clipboardprint?
1. git clone http://git.gitorious.org/meego-developer-tools/obs-project-config.git

我们输入的参数是由ftp://mirrors.kernel.org/meego/上的目录结构决定的,我们根据需要的版本修改,
例如: 目标为ftp://mirrors.kernel.org/meego/builds/1.1.90/1.1.90.5.20110301.7/repos/oss/ia32/packages/
则参数为 1.1.90.5.20110301.7 rsync://mirrors.kernel.org/meego/builds/1.1.90/
view plaincopy to clipboardprint?
1. import-meego-release.sh 1.2.90.0.0.20110824.2 rsync://mirrors.kernel.org/meego/builds/1.2.90/ /home/tvos/obs-project-config/MeeGo_1.2
注意MeeGo版本的说明:1.2.90.x表示该版本是1.3的beta版。而1.2.0则是MeeGo发布的第一个1.2版本。 首次执行上述命令时,在成功下载到所有所需RPM包后,会打印:HTTP401错误。原因是/root/.oscrc中的user和pass是有问题的:user = <project name="MeeGo:1.2.90.0.0.20110824.2:Core">
pass = opensuse:Admin正确的应该是:
user = Admin
pass = opensuse
成功执行上述命令后,会打印:

Sending meta data...
WARNING: SSL certificate checks disabled. Connection is insecure!

Done.
Sending meta data...
WARNING: SSL certificate checks disabled. Connection is insecure!

Done.
/srv/obs/events/armv8el/.scanrepo::MeeGo:1.2.90.0.0.20110824.2:Core::standard11721: No such file or directory
MeeGo:1.2.90.0.0.20110824.2:Core imported into OBS, after rescan is done.
表明MeeGo被成功导入OBS。
只有成功导入OBS,在Add repository时,键入"Mxxx"时才会显示MeeGo:1.2.90.....:
http://hi.csdn.net/attachment/201111/16/0_13214343572k9K.gif
补充1:



在VMWare中的OpenSuse中,执行
chkconfig --level 2 network on
出错;
但执行
chkconfig --add network
就OK了,此后chkconfig --add mysql也成功了。



补充2:


在导入MeeGo的过程中,碰到了一个奇怪的错误:
python2.7下的so库,不合格的ELF Header。
卸载python,重装等尝试了很多办法都不行。

最后,将原来搭建的OBS服务器(192.168.129.171)上的/usr/lib/python2.7全部打包覆盖到新OBS服务器(192.168.129.140)才解决这个问题。


文章转自: http://www.cnblogs.com/sonach/archive/2011/12/24/2300700.html
...全文
782 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
LeosDing 2012-01-13
  • 打赏
  • 举报
回复
好文,mark了,有时间搞个玩玩 ……

1,552

社区成员

发帖
与我相关
我的任务
社区描述
主要讨论与英特尔开源软件相关的技术
社区管理员
  • 英特尔开源软件社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧