Contents
社群建设系统
快速入门
1. 注册一个账号
访问 账号系统
- 选择 '新账号'
- 用你的信息填写完表格
- 在SIG小组内申请成为你所希望成为的成员
每周一,在CBS 会议之前,管理员会和SIG成员一起敲定保荐申请
当被批准后,你需要安装客户端工具并生成你的SSL证书。更多信息参见 zh/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)发送一个bug
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/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