OSC简介

来源:互联网 发布:360压缩软件 mac 编辑:程序博客网 时间:2024/06/15 03:22
http://jianlee.ylinux.org/Computer/Server/obs_use_of_osc.html 
参考
简介
简单使用
Webclient 界面
使用 OSC
上传 srpm
osc_add_srpm
批量提交

参考

  • Build Service/Tutorial - openSUSE (中文)

简介

OSC 使用 OBS 系统的一个 Python 语言编写的命令行接口程序,类似与 SVN 的操作,很多时候比起 WebClient 方式访问 OBS 系统更方便。

简单使用

假设我用 jianlee 的用户名在一个 OBS 服务器上注册了帐号,密码是 “ffffff” (六个f)。这里我用自己建立的 OBS 服务器。接口如下:

http://172.16.70.28:81/       webclient 接口http://172.16.70.28:82/       frontend 接口(即 api)http://172.16.70.28:83/       download 接口

和 openSUSE 提供的 OBS 服务接口对于关系如下(后面所有实例,如果您想使用 openSUSE 的编译服务,就把对于的接口换成 openSUSE 的):

http://172.16.70.28:81/   ==>   https://build.opensuse.org/http://172.16.70.28:82/   ==>   https://api.opensuse.org/http://172.16.70.28:83/   ==>   http://download.opensuse.org

以下示例已我建立的实验环境为基础。

Webclient 界面

用 webclient 创建 project

webclient 方式最简明,所以我们第一步访问 http://172.16.70.28:81/ 。使用 jianlee 用户登录,创建名为 home:jianlee 的 project 。(通常其他不已 home 开头的 project 没有创建权限)

添加一个 Repository (详见创建OBS服务器部分)

在 webclient 上创建软件包,添加文件都很直观,此处不赘述!

使用 OSC

checkout 项目

使用 OSC,首先要 checkout 项目到本地:

# osc checkout home:jianleeA    home:jianleeA    home:jianlee/obs-server# lshome:jianlee

注意 : 第一次运行 osc 命令,会创建一个默认的 ~/.oscrc 文件,但是默认的 apiurl 参数指向https://api.opensuse.org ,我们终止 osc 的执行,修改 apiurl 为 "http://172.16.70.28:82/"。再次执行,会询问用户名和密码。输入即可。如果我们再次打开 ~/.oscrc 文件查看,会看到这些信息:

[http://172.16.70.28:82]user=jianleepass=ffffff

现在 osc 当前目录创建了一个 "home:jianlee" 目录,进去看看(因为我刚才在 webclient访问的时候,顺手就创建了一个包 obs-server,所以这里会看到这个目录。:-)):

# cd home\:jianlee/# lsobs-server# find../.osc./.osc/_project./.osc/_packages./.osc/_apiurl./obs-server./obs-server/.osc./obs-server/.osc/_osclib_version./obs-server/.osc/_project./obs-server/.osc/_package./obs-server/.osc/_files./obs-server/.osc/_apiurl

创建和上传包

osc meta pkg -e project package

进入 "home:jianlee" 目录,

这里的例子以创建一个 obs-server 编译安装依赖的一堆包为例,刚才我在 webclient 里创建了 obs-server 包,编译安装 obs-server 还要其他的包,比如 lighttpd, rails等。

创建一个 lighttpd 包

# osc meta pkg -e home:jianlee lighttpd

现在 osc 会用一个打开编辑器让你编写一个配置文件。选用何种编辑器可以在 osc 配置文件里配置。默认使用 VI。

我编写过的文件内容大致如下:

<package name="lighttpd">  <title>A Light weight web server</title>  <description>A light weight web server,obs-server need it.  </description>  <person role="maintainer" userid="jianlee"/>  <person role="bugowner" userid="jianlee"/>  <url>http://www.lighttpd.net/</url>...</package>

编辑完保存退出,现在我们还看不到刚才创建的 package,用 osc 更新一下目录:

# osc up

现在可以看到 lighttpd 目录了。

拷贝文件到 package 目录

现在进入 lighttpd 目录,

拷贝一些需要的文件到这个目录里。就是 RPM 编译目录中 SOURCES 和 SPECS 目录中的文件。一定要有这个 spec 文件!

[root@localhost lighttpd]# lsfavicon.ico                      lighttpd-1.4.20-defaultconf.patch  lighttpd-mod_geoip.cindex.html                       lighttpd-1.4.20-initinfo.patch     lighttpd-mod_geoip.txtlight_button.png                 lighttpd-1.4.22.tar.bz2            lighttpd.speclight_logo.png                   lighttpd-empty.png                 php.d-lighttpd.inilighttpd-1.4.18-mod_geoip.patch  lighttpd.logrotate
使用 'osc add' 添加文件到 package 项目

拷贝完文件后,更新这些数据到项目中。

[root@localhost lighttpd]# osc add *A    favicon.icoA    index.htmlA    light_button.pngA    light_logo.pngA    lighttpd-1.4.18-mod_geoip.patchA    lighttpd-1.4.20-defaultconf.patchA    lighttpd-1.4.20-initinfo.patchA    lighttpd-1.4.22.tar.bz2A    lighttpd-empty.pngA    lighttpd.logrotateA    lighttpd-mod_geoip.cA    lighttpd-mod_geoip.txtA    lighttpd.specA    php.d-lighttpd.ini
提交项目

上面命令 (osc add ) 把这些文件标记为可提交状态。现在提交:

# osc commit

填写完一些信息后,osc 就开始提交了。

* 添加仓库

现在我们要选择仓库

获取仓库列表

# osc lsGTES:11.3deletedhome:jianlee

osc 编辑 project 配置

# osc meta prj -e home:jianlee

我们任何时候都可以这样编辑 project 配置

现在的样子:

<project name="home:jianlee">  <title>Jian Lee's home project</title>  <description>Jian Lee's home project on GTES</description>  <person role="maintainer" userid="jianlee"/>  <person role="bugowner" userid="jianlee"/>  <repository name="standard">    <path project="GTES:11.3" repository="standard"/>    <arch>x86_64</arch>    <arch>i586</arch>  </repository></project>

注意:repository="standard"用于将来的扩展(仓库的分支)。

上传 srpm

前提:创建好 project,使用 'osc checkout' 更新到本地。假设我们的 project 是 GTES:11:U4,现在处于 GTES:11:U4 目录。

处理一个软件包简单流程是:

  • 创建 package ,编辑它的信息 : osc meta pkg -e GTES:11:U4 package
  • 进入 package 目录: cd package
  • 拷贝需要的文件
  • 添加文件: osc add *
  • 提交:osc commit -as

如果要处理多个软件包就需要再次重复这个流程,可是很多时候我们需要直接提交很多 srpm 包,我们只是想利用 obs 的编译环境编译一下它们,如果按照上面的方法就非常麻烦了。

对于批量提交最主要的麻烦 'osc meta pkg -e' 阶段需要我们手动干预,如果能变成自动的就 OK。

osc 对 meta 命令提供了一个 '-F' 选项可以提交指定的文件为软件包描述信息,我们只要根据每个软件包自身的信息自动创建一个描述文件就可以了,我写了一个脚本完成这个任务。

osc_add_srpm

前提:安装 osc 包,下载 osc_tools 到本地, 处于 project 目录下。

/path/to/osc_add_srpm -u Your_username Your_srpm

批量提交

有了 osc_add_srpm ,批量上传就简单了。

原创粉丝点击