Open Build Service(OBS) Ubuntu deb 包构建工具
本文介绍使用
Open Build Service(OBS)构建Ubuntu deb包
介绍
- Open Build Service (OBS) 构建工具,构建的软件包,以及 SUSE Linux Enterprise、Arch、Debian、Fedora、Scientific Linux、RHEL、CentOS、Ubuntu 甚至更多发行版的部分软件包。官网
OBS是C/S模式client用户可以通过Web UI(官网)或 命令行(osc)配置server有很多主机提供服务
- ubuntu 打包文档
- 其他部署
obs 页面操作:
- Overview 工程简介
- Repositories 包列表
- Monitor 包的构建状况
- Requests 用户请求,类似于 github 的 mr
- Users 工程的所有用户
- Subprojects 子工程
- Project Config 配置文件
- Repotype
- Presinstall
- Prefer
- Attributes
- Meta 一些参数信息
- Status
- 子目录:Branch package 派生包
安装 osc 客户端
CentOS
cd /etc/yum.repo.d
wget https://download.opensuse.org/repositories/openSUSE:/Tools/CentOS_7/openSUSE:Tools.repo
yum makecache
yum install osc -yUbuntu
# sudo apt install osc
# wget https://download.opensuse.org/repositories/openSUSE:/Tools/Debian_8.0/all/obs-build_20230808-1_all.deb
# wget https://download.opensuse.org/repositories/openSUSE:/Tools/xUbuntu_20.04/amd64/osc_1.4.3-0_amd64.deb
dpkg -i osc_1.4.3-0_amd64.debosc 使用
help
配置认证信息
- 使用
osc token生成配置文件,需要数据用户名和密码
~/.config/osc/oscrc文件示例
osc 示例
# 查看当前登录的用户
$ osc whois
xiexianbin: "xie xianbin" <me@xiexianbin.cn>
# 打开浏览器
$ obs browe
# 查看sources or binaries
osc list home:xiexianbin
osc list home:xiexianbin:xxx
# 下载获取远程项目的某一个包
$ osc co home:<user name>/<project name>
$ osc checkout home:xiexianbin
A home:xiexianbin
A home:xiexianbin/containers-skopeo
A home:xiexianbin/containers-skopeo/skopeo_1.13.3-1.debian.tar.xz
A home:xiexianbin/containers-skopeo/skopeo_1.13.3-1.dsc
...
$ osc co home:xiexianbin/containers-skopeo
$ cd home:xiexianbin/containers-skopeo
# 查看状态
$ osc status .
# 查看仓库信息
osc repos
# 提交重命名后的修改
osc addremove
# 更新本地代码
osc update
# 直接推送修改后的内容到远程OBS仓库中去
osc ci -m1
# 添加文件到打包项目
osc add *
osc add https://github.com/xiexianbin/xxx/xxx.tar.gz
# 提交到远程OBS仓库
osc commit
# 查看提交日志
osc log
# 查看打包结果
osc results新建包
cd [project名]
# 新建Package
osc mkpac [package名]
# 添加文件
osc add *
# 上传服务器
osc commit
# 更新包
osc up
# 打包
osc build
osc build openSUSE_Tumbleweed x86_64
# 本地打包Debian/Ubuntu deb 包打包
相关文件:
_service文件,记录文件位置
<?xml version="1.0"?>
<services>
<service name="obs_scm">
<param name="versionformat">@PARENT_TAG@</param>
<param name="url">https://github.com/jane/my_package.git</param>
<param name="scm">git</param>
<param name="revision">@PARENT_TAG@</param>
<param name="extract">my_package.spec</param>
</service>
<service name="set_version"/>
<service name="tar" mode="buildtime"/>
</services>PACKAGE.dsc文件,Debian source control files是构建二进制包的控制文件 参考*.orig.tar.xz|gz源码包*.debian.tar.xz|gzdebian 打包的文件压缩包,加压后的结果debian/changelogcontrolrules- …
本地打包
- 参考
- 可以删除
_service文件,防止网上下载源码文件
apt install obs-build build-essential devscripts equivs
osc add xxx
# use one of: Debian_10, Debian_11, Debian_12, RHEL_7, xUbuntu_20.04, xUbuntu_22.04, xUbuntu_23.04
osc build --local-package xUbuntu_23.04 x86_64
osc build --local-package --trust-all-projects -d xUbuntu_23.04 x86_64 *.dsc
# osc build --vm-type=qemu --vm-memory=MB REPOSITORY ARCHITECTURE
# osc shell --vm-type=VM
# osc wipe --vm-type=VM- 查看构建好的deb包的信息
dpkg -c /var/tmp/build-root/xxx_x86_64/usr/src/packages/DEBS/*.deb- 等价于使用
sbuild打包
sudo apt install -y debhelper sbuild
sudo sbuild --arch=x86_64 -c sid-x86_64-sbuildF&Q
Exec format error
sudo update-binfmts --enableCan’t locate Build.pm in @INC (you may need to install the Build module)
apt-get install libmodule-build-perl
cpan Module::Build