MeeGo本地OBS搭建步驟

主要參考文章:

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 報錯:

  1. 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
  1. 成功執行上述命令後,會打印:

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。
  1. 只有成功導入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)才解決這個問題。


文章轉自: http://www.cnblogs.com/sonach/archive/2011/12/24/2300700.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章