Contents
社群建設系統
快速入門
1. 註冊一個帳戶
拜訪 帳戶系統
- 選擇「New Account」
- 在表格內填上你的資料
- 申請成為你想參予的 SIG 的會員
在每個星期一的 CBS 會議開始之前,管理員將會與 SIG 的成員處理會員的申請
獲批准後,你須要安裝客端工具並建立自己的 SSL 憑證,詳情見 zh-tw/HowTos/CentosPackager
執行 cbs moshimoshi,你應該在輸出看見自己的用戶名稱。
意外收獲:Github 為 zsh 及 bash 用戶提供(非官方的)自動填充功能(請留意 bash 的填充功能已獲更新,zsh 的較舊。明白嗎?)
2. 取得協助
如果你有 CBS 上的困難,你有數個取得協助的途徑:
- 在 freenode 的 IRC 網絡加入 #centos-devel
在 centos-devel@centos.org 郵件列表發出一則信息
在 https://bugs.centos.org 建立錯誤報告(項目:Buildsys,類別:community buildsys)
RPM 初班
- RPM 術語的快速回顧:
{{{SRPM=ksh-20120801-10.el6.4.src.rpm NAME=ksh VERSION=20120801 RELEASE=10.el6.4 DISTTAG=el6 }}}
Koji 初班
Koji 有數個必須掌握的基本概念:
標籤(tag):它可以是一個 buildroot 定義標籤(<小組名稱><主要版本>-<專案>-<專案發行本>-<標籤>-build、storage7-gluster-37-el7-build),或者是一個目標標籤(<小組名稱><主要版本>-<專案>-<專案發行本>-release 或 <小組名稱><主要版本>-<專案>-<專案發行本>-testing)。
- 目標(target):它把一個 buildroot 定義標籤聯繫到一個目標標籤。
- 當你建立 srpm 時,該目標便會被應用在指令行。
根據預先設定,所有成功建立的套件都會被令名為 <小組名稱><主要版本>-<專案>-<專案發行本>-testing。
每個目標在 CBS 內都採用 <小組名稱><主要版本>-<專案>-<專案發行本>-<發行標籤> 這個架構,如:virt6-xen-44-el6 、storage7-gluster-37-el7、storage7-gluster-37-el7.centos、等……
- 當你建立 srpm 時,該目標便會被應用在指令行。
- 套件(package):源碼 rpm 的名稱。例如:ksh-20120801-10.el6.4.src.rpm
- 被建立的套件:這泛指 koji 建立的檔案,例如:ksh-20120801-10.el6_5.4.rpm、ksh-20120801-10.el6.4-devel.rpm、等……
- 進行標籤:你可以把建設環境聯繫到不同的目標標籤。譬如在 CBS 的工作流程中,你可以透過標籤把套件從 -testing 提升至 -release。
利用 CBS 進行建設
以下文檔假設有一個名為 bananas 的特別興趣小組。請用你的特別興趣小組名稱來取替,但我們已建立了 bananas 標籤作為測試場地,讓你可進行試驗。
1. 臨時建設
Koji 提供一個選項讓你可運用任何目標建立臨時的套件。
cbs build --scratch bananas6-el6 ksh-20120801-10.el6.4.src.rpm
2. 標準建設
- 建立新套件的第一步,就是為套件加入你所需的目標標籤
cbs add-pkg --owner "username" bananas6-testing ksh cbs add-pkg --owner "username" bananas6-release ksh
這個動作必須為每個特別興趣小組的每個套件進行一次。
- 然後你可以開始進行建設:
cbs build bananas6-el6 ksh-20120801-10.el6.4.src.rpm
3. 將現有的建設加進一個標籤內
有時,你想建設一個套件但收到如下的錯誤訊息:
GenericError: Build already exists (id=1231, state=COMPLETE): {'name': '$pkgname'..... lot of details ....}
意思就是你已經將套件加進一個目的標籤(利用 cbs add-pkg 指令,見上文),但當你嘗試建設該套件時,koji 已用同一個 NVR 建設它,或許是在另一個標籤下。 因此,koji 拒絕建設它,因為 koji 不會重新建設擁有同一 NVR 的套件。 簡單的建決方法就是「標籤」該建設,讓它自動出現在你的標籤庫內。 假設該套件的名稱是 yaml-cpp,而你已經建設了 yamp-cpp-0.5.1-6.el7(你可利用 koji 的搜尋功能檢查它是由誰建立,及擁有甚麼標籤)。
cbs tag-build bananas7-testing yaml-cpp-0.5.1-6.el7
Kojira 將會重建軟件庫資料,並加入已建設的套件。
4. Git 建設
一個簡單的例子:
cbs add-pkg --owner "username" bananas7-testing tzdata cbs add-pkg --owner "username" bananas7-release tzdata cbs build bananas7-el7 "git+https://git.centos.org/git/rpms/tzdata.git?#e24d98"
常見錯誤信息
1. 套件已獲建立
GenericError: Build already exists
見上文有關「將現有的建設加進一個標籤內」的段落。
2. 已過期憑證
要是你看見這個錯誤信息:
"Error: [('SSL routines','SSL_shutdown', 'shutdown while in init')]
有可能你的 ~/.centos.cert x509 憑證已過期。你可以利用以下指令確定:
openssl x509 -in ~/.centos.cert -noout -text|grep "Not After"
如果它已過期,你只須(按照 https://wiki.centos.org/zh-tw/HowTos/CentosPackager 內的第 2 步)利用 centos-cert 建立新的憑證便可以了。
3. 採用已過時的 SSLv3
要是你看見這個錯誤信息:
Error: [('SSL routines', 'SSL3_READ_BYTES', 'sslv3 alert handshake failure'), ('SSL routines', 'SSL3_WRITE_BYTES', 'ssl handshake failure')]
那麼你需要以手動方式修正你的 koji 實例,以 TLSv1 替代 SSLv3(已證實不安全)。
進階設置
1. 應用多個 koji 實例
Koji 透過 -p 旗標支援設定檔。我們定義一個名叫 cbs 的設定檔(因此你才能使用這個方便的指令:/usr/bin/cbs)
- 如果要 koji 這個指令採用特定的設定檔,你可執行:
koji -p cbs list-tags
- 你也可以同時保留 Fedora 及其它 koji 實例的設定。
- 不應用 -p 時所採用的伺服器應該在 [koji] 部份內指定,因為這是預設設定。
已知問題
- 現時仍未啟用建立 git.c.o 的支援。
外部連結
官方文檔:https://fedoraproject.org/wiki/Koji
Translation of revision 35