歡迎您光臨本站 註冊首頁

學姐帶你學openSUSE Build Service註冊安裝

←手機掃碼閱讀     火星人 @ 2014-03-12 , reply:0
  

 本來這系列文章準備在我完成中文維基的翻譯工作後來提綱挈領的寫, 但是前面有看到大局感缺失的 peng yang 居然已經搶先寫了半瓶水的出來。為了不誤導群眾, 我只好寫個四分之三瓶的水。感謝 @doublechou 來稿

 

目前的構思是:

  • OBS 的註冊與安裝
  • OBS 的常用命令
  • RPM 包的構建
  • 打包調試
  • 提交給發行版

其中 RPM 包的構建由於涉及到比較難的 spec 文件的編寫, 會花兩到三篇的篇幅來講, 打包調試由於有好多的常見錯誤要列示, 會花兩篇的篇幅來講, 其他都是一篇, 總之先湊個 10 篇左右的文章系列, 爭取讓大家在看到第四到五篇的時候能夠真正從頭到腳打包出一個打包者是自己的程式。

什麼樣的基礎能看懂呢? 網路上好多號稱“零基礎”,“無痛”做某事的教學,到頭來都是殺人又放血,只留一身五花膘。但學姐的不一樣啦, 你只要有一顆折騰的心就夠了。和其他人不一樣,學姐可以承認自己也是傻瓜過來的,甚至現在在某些問題上還是傻瓜,所以教學里會非常的照顧這些同病相憐的傻瓜。非要說需要什麼前提條件呢, 我就試著寫一點吧。

  • 你的發行版要是 openSUSE。(簡單吧?)
  • 你要知道在文本編輯器和命令行里按 tab 是自動補全或者空四個格子。(這其實是幫6個月後的你的啦, 是讓你的代碼格式更易讀,免得之後自己都看不懂了。)

沒了。其他的我用到都會教, 有進階教學我會 point 你過去, 感興趣就去學, 不感興趣也不影響。

好了, 現在讓我們開始 10 次圍剿的第一次。(本來想說萬里長征的第一步的, 但想到那是國軍大大的 failure, 於是就...)

  • 什麼是 openSUSE Build Service?

openSUSE Build Service (縮寫:OBS) 是 openSUSE 的軟體打包服務平台, 更多看維基: 編譯服務專題

最近“軟體中心”這個概念炒的非常火,原因是國人用新手的思維和序員的專業完成的“深度軟體中心”登上了 OMG!Ubuntu!, 實際上 SUSE 在至少5年前就已經有了很可用的系統中心 YaST 了。當用 YaST 安裝軟體的時候,有沒有想過那些軟體包的“雞/蛋”問題? OBS 就是下蛋的母雞。

  • 註冊 OBS

這個不是我不想寫,是真的沒什麼寫的,要說支付寶我還能寫個註冊教學, OBS 不比註冊 Google 帳號難, 除非你不懂英文, 大陸小學就開始教的東西, 如果沒有學到的話那你肯定也沒有學到過算機啦。

一張圖解決一切

  • 大戟士 (hermes) 設定

這個服務是很重要的, 但好多人都不知道, 前面論壇有看到甚至 SUSE China 的人都把 hermes # opensuse.org 當作是個活人, 不知道耶誕節有沒有給它發郵件要禮物速運地址哈哈。

它的翻譯應該是 愛瑪仕,但是這是個奢侈品品牌(學姐當然是很愛的啦), 容易搞錯, 所以我就用了“大戟士”的翻譯,不知道來自哪裡,但感覺像是個“衛兵”的概念, 實際上 hermes 做的也是這個。

任何一個開發者都會有一個郵件通知系統, 這好理解吧。但是要是你上個線都給你發郵件就太 spam 了。大戟士就是這樣一個衛兵, 你告訴它什麼樣的郵件我需要收, 收信的頻率是多快。

配置在 hermes.opensuse.org, 我之所以提是因為這個地址沒有國人知道, 也不會想到去放狗搜。

  • OBS 安裝

這裡學姐就要開始使用命令行了。(進入命令行的方法是打開 Konsole) 將要使用的是 YaST 的後端 zypper。YaST 的圖形界面:YaST 管理員設定 - 軟體套件庫 也可以做。

sudo zypper ar -f http://download.opensuse.org/repositories/openSUSE:/Tools/openSUSE_12.1/ openSUSE:Tools:openSUSE_12.1  

使用這個命令添加 openSUSE:Tools 源,裡面有最新的 OBS 命令行客戶端。我是 openSUSE 12.1, 其他發行版和 openSUSE 版本可以看選擇發行版,超多支持的。OBS 暫時是沒有本地圖形客戶端的,唯一的圖形客戶端就是剛才你註冊帳號的那個網頁客戶端。但是網頁比命令行有些不好, 這些慢慢告訴你們。

sudo zypper in osc 

使用這個命令來安裝 OBS 命令行客戶端 osc,出現的安裝依賴提示輸入 y 確認就好。

Tips0: openSUSE 發行版下面,別的 Linux 學姐沒用過不好說, 任何的命令行指令的幫助,都可以通過指令本身 + "--help" 選項看。而且,Tips 來了,可以“分層”看指令的某個選項怎麼用,別笑,你們眼中的神秘打包俠 “逍遙遊” 就不知道。舉例:

//查看 zypper 指令的幫助 zypper --help //查看 zypper ar 選項的用法 zypper ar --help 

為什麼要教大家這個? 以後你某個 osc 指令不會用,也可以這樣子來看用法呀!

  • 初始運行

一旦你註冊了 OBS, 你就會有一個 home:MargueriteSu 這樣的軟體工程在 OBS 上, 這就是我們打包者俗稱的私人車庫。

OBS 對於私人車庫的限制是很少的, 你可以在它下面打包違反版權的軟體, 只是提交給 openSUSE:Factory 工廠版的時候會被拒絕, 但即使拒絕也不會遠程刪除你的包。

另外不要初生牛犢不怕虎的去直接提交到工廠版, 首先工廠版的提交是有一定順序和規則的, 畢竟工廠版就是下一個穩定版本的 openSUSE。這些學姐會在這個系列的最後專門講這個環節; 其次, 一旦開通了 OBS,就要有承受 Bug Reports 的準備, 如果 auto-build team 的人手一松放你的不完美軟體包通過, 那你未來的一段時間可能會在 Novell Bugzilla 收到很多這樣的 Bug Reports:

下面講怎麼在本地初始化你的打包環境:

*首先你需要一個項目文件夾,在你的 home 下面新建一個 Projects 吧。

mkdir Projects cd Projects 

*接著用下面命令擷取你的私人車庫到本地, 當然現在它是空的。

osc co home:MargueriteSu 

懂 subversion 版本管理系統 的人可能會有優勢, 因為 osc 好多指令都是 fork 自 svn 那邊的。

這會在 Projects 文件夾下面創建一個 home:MargueriteSu 的文件夾。如果你車庫裡有軟體包的話,還會創建的軟體包單獨的子文件夾。這就是 OBS 的樹形文件結構(Hierachy,文件層級標準)

Tips1: 熟練了之後, 有些時候你的私人車庫比較龐大, 你只想改動其中某一個軟體, 那麼可以這麼做:

osc co home:MargueriteSu application 

*取回了你的私人車庫之後, 你要設定下你要為哪些發行版打包。

可以像 peng yang 那樣在這個界面設定, 比較直觀。

但是我們既然已經在命令行下面了,為什麼要再去開一個瀏覽器呢?

用指令可以這樣做:

osc meta prj -e home:MargueriteSu  

這是 osc 的 meta 元標籤指令, 元標籤就是你的東西的名字啊描述啊這些東西。prj 表示你編輯的是工程的元標籤。(同樣的還有 pkg 表示你編輯的是軟體包的元標籤)-e 表示 edit 編輯。(同樣的還有 -c 表示創建, -d 表示刪除,除非註銷你的 Novell 帳號, 不然你的 私人車庫主文件夾 home:MargueriteSu 是不可刪除的,你那麼做會清空它而不是刪除它)更多的命令可以用 Tip0 教你們的方法看幫助:

osc meta --help 

接著你需要學習下使用 vi 或 vim 命令行編輯器, 前者是後者的簡化版本, 我一般用它, 因為我們要做的事情用它已經足夠了,而且可以少輸入一個字母,因為懶嘛。

你不要去學高難度的使用, 只需要知道:

*按“i”進入編輯模式, 按 Esc 退出。

*一般的 Ctrl + C/V 複製粘貼是用不了的,要用滑鼠畫了右鍵。

*在非編輯模式,按":wq"是保存退出,":q!"是退出。

*在非編輯模式,"j"是下一行,"k"是上一行,PgUp 是上一頁,PgDn 是下一頁。

因為上面我運行的 osc 命令會給你打開一個遠程元數據文件來編輯。

// 這就是預設的樣子,名字什麼都幫你添好 <project name="home:MargueriteSu">     <title>MargueriteSu's Home Project</title>     // 你需要編輯下你的私人車庫描述,寫一些煽動的 slogan 上去, 比如“Linux’ll set you free!”之類的。     <description></description>     // 這是表示車庫許可權設置的,最重要的是 bugowner,它看上去像是用戶向誰報 bug report,實際上決定了這個源到底屬於誰(曾經想刪掉自己的表示壓力好大); maintainer有提交包/審核包和在該源下打包的權力。可以添加別的用戶過來幫你打工。     <person userid="MargueriteSu" role="bugowner"/>     <person userid="MargueriteSu" role="maintainer"/>     //這個一般是不動的,除非你像我一樣 800 年不用 i586, 可以改成 <disable>i586</disable>, 但上游有些不懂你為 openSUSE 省電省資源的審核者會不問原因的要求你打開它,一般我都不甩的。     <build>         <enable />     </build>     //這個一般也是不動的,除非你自己想 debug 你自己的軟體來給上游軟體開發者報 bug report。     <debuginfo>         <disable/>     </debuginfo>     //按照這個格式添加 openSUSE_Factory, openSUSE_Tumbleweed, openSUSE_11.4, SLE_11_SP1, SLE_11, SLE_10_SDK,常用的源縮寫我都寫在這裡了,寫錯會無法保存。     <repository name="openSUSE_12.1">         //這是你車庫裡的軟體打包前的預編譯環節要求的依賴包的來源。"standard" 一般沒問題,有時候 openSUSE_Factory 的這個位元組可以用 "snapshot"。         <path repository="standard" project="openSUSE_12.1/>         //這是你車庫裡的軟體最終被打包的 CPU 架構,如果你沒下載錯,是 x86_64 的。這也是我為什麼禁用 i586 的原因, 因為沒人用。但是不要在這裡改,用全局設定。修改方便。         <arch>i586</arch>         <arch>x86_64</arch>     </repository> </project> 

之後用剛教你的 ":wq" 保存,你會發現命令行閃了幾個命令就空了,沒關係它已經上傳到伺服器去了。你可以在上面的第三張圖的位置看到它們。

Tip2: 可能有的學弟學妹已經注意到了學姐的截圖裡面,還有 home:Marguerite:gimp-2.7 這樣的 sub-project, 覺得好酷,是這樣實現的,看這張圖,或者用下面的命令:

osc meta prj -c home:MargueriteSu:gimp-2.7 

同理可推, checkout 的時候,也可以:

osc co home:MargueriteSu:gimp-2.7 gimp 
  • 關於指令許可權的說明

以上我所有的指令都是用我自己的 私人車庫 為例子做的,你們如果照抄的話, 除了 osc co 能正常使用之外, 其它都不行的。但出錯了是怎樣我還真的不知道,因為 osc 首次使用會在命令行下提示你輸入你註冊的 OBS 用戶名和密碼。這個也是可以改的,在你的 /home/usrname/.oscrc 裡面。明文存儲,儲存文明。

好了,瑪噶學姐帶你學 OBS 的第一篇:註冊與安裝 就結束了。那麼,再會啦~么么~

Marguerite



[火星人 ] 學姐帶你學openSUSE Build Service註冊安裝已經有970次圍觀

http://coctec.com/docs/linux/show-post-65260.html