主要参考文章:

http://blog.csdn.net/forestarmy

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

1、安装OpenSUSE 11.4

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

  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开发的重要部分。

  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和相关的包

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

设置数据库

默认开机开启:

  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。


使用系统提供的工具安装数据库:

  1. /usr/bin/mysql_secure_installation 

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

创建数据库:

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

将obs的用户信息加到数据库中:

  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:

  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 
  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 

填充数据库:

  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. 网页形式显现出来
    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. $SERVER["socket"] == ":81" { 
    13. rails_app = "api" 
    14. rails_root = "/srv/www/obs/api" 
    15. rails_procs = 3 
    16. # production/development are typical values here 
    17. rails_mode = "production" 
    18. log_root = "/srv/www/obs/api/log" 
    19.  
    20. include "vhosts.d/rails.inc" 
    21. $SERVER["socket"] == ":82" { 
    22. server.name = "192.168.129.140" # IP地址改成自己服务器的地址,比如“192.168.129.140” 
    23. server.document-root = "/srv/obs/repos/" 
    24. dir-listing.activate = "enable" 
    25. }  
    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. ## mod_magnet 
    14. ## 
    15. include "conf.d/magnet.conf" 
    16.  
    17. ## 
    18. ## FastCGI (mod_fastcgi) 
    19. ## 
    20. include "conf.d/fastcgi.conf" 
  1. 服务器地址确认,修改相关文件的服务器地址:

    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. 设置服务器开机启动选项
    1. chkconfig --add memcached lighttpd obsapidelayed obswebuidelayed  
    2. chkconfig --add obsrepserver obssrcserver obsscheduler obsdispatcher obspublisher obswarden obssigner 

修改网页使用权限

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

配置obs服务器

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

启动obs服务器

  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及相关的工具

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

修改服务器IP地址,是它只想我们所在的服务器:

  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:

  1. chkconfig --add obsworker  
  2. rcobsworker start 

注意:如果rcobsworker start 报错:

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

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

5、导入MeeGo基础数据

  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"

  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:

      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/
      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.....:

 

 

补充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)才解决这个问题。
Posted on 2011-12-24 21:55  sonach  阅读(1537)  评论(0编辑  收藏  举报