如何使用 openEuler OBS - (一)介绍

Changjie Fu | 2020-03-26
总浏览量

OBS是什么

OBS是Open Build Service 的简写(官方网址:https://openbuildservice.org/),

原本是作为发行版openSUSE专用的rpm打包的平台,后续扩展为面向多发行版、多架构、多格式的打包发布平台。

与koji的不同

  • 管理范围

与koji只管理包(包括源码包与二进制包)仓库不同,OBS同时管理着源码与包两个仓库。koji是从一个包编译完成后开始接手,根据包的NVR(Name-Version-Release)确定包的位置,在编译验证后入库保存。而OBS是从源码阶段开始管理,它拥有自己的包版本标记与changelog日志。OBS可以像git一样保存源码的历史版本,对源码进行分支管理。并生成各版本的二进制包与源码包。

换句话说,OBS可以同时实现koji和git的功能。 > OBS接受源码的格式与git普遍的保存格式并不相同,所以OBS无法完全取代git。

  • 适用格式

OBS可以生成rpm、deb等格式的包,而koji只适用于rpm格式。

OBS使用

安装osc

osc是OBS的命令行程序,您可以在这里 ,选择自己的系统版本,添加软件源到自身包管理器中。

这里以Fedora30为例:

  1. 添加软件源

将文件http://download.opensuse.org/repositories/openSUSE:/Tools/Fedora_30/openSUSE:Tools.repo另存到/etc/yum.repo.d/中。 > 需要root权限。

  1. 安装osc

执行 dnf install osc 命令安装osc。

配置openEuler的OBS

有很多方法可以将osc链接至openEuler外网的OBS:

  1. 最基础的方法为在每次执行 osc 命令时添加参数: -A https://build.openeuler.org/
  2. 使用alias:alias iosc="osc -A https://build.openeuler.org/"
  3. 修改位于home目录下的osc配置文件:vi ~/.oscrc,并写入以下内容:

    [general]
    apiurl = https://build.openeuler.org/
    
    [https://build.openeuler.org/]
    
    

注册OBS账号

打开 https://build.openeuler.org/,点击右上角“Sign Up”,注册自己喜欢的帐号。

注册完成后,重新回到上面网址。点击右上角的“Login”,用新账户登录。系统会在注册时自动创建一个以“home:用户名”为格式命名的Home Project。

创建本地目录

创建obs工作目录: mkdir ~/obs

进入obs工作目录: cd ~/obs

将远程obs库同步到本地: osc checkout home:用户名

输入网页用户名与密码

第一次登陆时会询问本地密码保存方式,三种方式分别是:

  1. 明文保存
  2. 加密保存
  3. 不保存(需要每次输入)

这里推荐选择2。同步结束后可以看到当前目录下有以Project名命名的文件夹。

配置Project

两种方法:网页操作、命令行操作

  • 网页操作:

在obs主页点击右上角

依次进入 Home Project -> Repositories -> Add from a Distribution 。

按上图所示填写基础配置,并在Name栏填写喜欢的名字。

在选择后后退至Repositories界面,可以看到如下图所示的环境:

  1. 第一个为编辑按钮,可以选择当前发行版编译架构
  2. 第二个为添加按钮,可在发行版标准环境上额外添加单独的包(例如其他私人编译的依赖包)
  3. 第三个为下载,点击后转到当前环境的仓库
  4. 第四个为删除
  • 命令行操作:

执行命令: osc meta prj -e [project名] ,会看到类似如下文本:

其中, 1. repository标签为仓库标签, 可添加此项添加编译时的基础环境 2. Path标签为可用包路径标签, 需手动添加发行版包路径。如需要额外依赖, 也可以单独添加。 3. Arch标签为编译架构, 可同时添加多个。

例如:

```xml
  <repository name="openEuler_selfbuild_BaseOS_beiyong_aarch64">
    <path project="openEuler:selfbuild:BaseOS" repository="mainline_standard_aarch64"/>
    <path project="openEuler:selfbuild:BaseOS" repository="standard_aarch64"/>      //此为额外添加依赖
    <arch>aarch64</arch>
    <arch>armv7l</arch> //此为多架构选项
  </repository>
```

新建包

进入Project目录: cd [project名]

新建Package: osc mkpac [package名]

进入Package目录并将下载源码以【tar包、所有patch、spec文件、其他source文件】格式放置:

!

向新创建的package中添加以上文件: osc add *

将更改上传至服务器: osc commit

在这里可以注明本次上传的简短介绍,用:wq保存并退出

之后就可以在网页上等待编译并查看结果了。

查看包状态与下载包

您可以在Project与Package主页右侧看到当前编译状态

  • finished 表示在某个系统平台执行编译链接、安装检查的过程结束
  • succeeded 状态为编译成功
  • failed 为编译失败,您可以点击查看日志

您可以点击编译平台 -> Go to download repository 到达编译仓库,获得此Project的repo源与所有编译成功的package。

更新包

进入project文件夹: cd [project名]

更新本地代码为最新代码: osc up

进入package目录,使用 osc add 命令将新文件添加到package,修改spec文件后使用osc commit命令上传新版本。

参考资料

【免责声明】本文仅代表作者本人观点,与本网站无关。本网站对文中陈述、观点判断保持中立,不对所包含内容的准确性、可靠性或完整性提供任何明示或暗示的保证。本文仅供读者参考,由此产生的所有法律责任均由读者本人承担。
[Disclaimer] This article only represents the author's opinions, and is irrelevant to this website. This website is neutral in terms of the statements and opinions in this article, and does not provide any express or implied warranty of accuracy, reliability, or completeness of the contents contained therein. This article is for readers' reference only, and all legal responsibilities arising therefrom are borne by the reader himself.