- 编写软件包对应的spec文件,并压缩源码文件,提交到gitee自己fork的仓库上
- 通过引入gitee链接,直接提交到obs平台上
- 通过obs拉取,在本地构建验证
- 针对报错进行修改
- 修改完成后,先引入openeuler,再init src-openeuler
-
spec如何编写:
- spec文件里包含着软件打包的全部信息,编写完成spec后进行构建,系统会按照spec的规范生成RPM包。
- 编写spec文件可以参考:(https://gitee.com/cherry530/doc/blob/master/SPEC%E6%96%87%E4%BB%B6%E7%BC%96%E5%86%99.md)
-
obs如何通过gitee引入:
- 在obs平台你本人创建的包中有_service文件
- 可以以上述代码为模版,更改_service文件,将url改写为自己对应的软件包gitee链接,然后save,obs平台会自动拉取gitee的代码到平台上
- 引入新仓:先在openeuler/community下对应的sig下sig-info.yaml和src-openeuler下对应软件包开头的首字母下的软件包.yaml进行修改
- 修改如下(供参考):
- https://gitee.com/openeuler/community/pulls/5405/files
- 在obs平台你本人创建的包中有_service文件
-
引入obs无权限:
- 如果要修改别人仓库出现无权限,可以将软件包从自己的仓库提交到别人的仓库
- 在我编写完spec文件后,尝试执行构建命令,依次出现以下两个问题:
- [ 798s] + desktop-file-validate /home/abuild/rpmbuild/BUILDROOT/btop-1.3.0-3.oe2309.riscv64/usr/share/applications/btop.desktop
- [ 798s] /home/abuild/rpmbuild/BUILDROOT/btop-1.3.0-3.oe2309.riscv64/usr/share/applications/btop.desktop: error: file contains at least one line ending with a carriage return, while lines should only be separated by a line feed character. First such line is: "[Desktop Entry]"
- [ 798s] error: Bad exit status from /var/tmp/rpm-tmp.SIitiw (%install)
- 我的判断:desktop-file-validate 工具在验证桌面文件(btop.desktop)时发现了一个问题,即文件中至少有一行以回车符结束,而应该使用换行符。
- 解决方法:在spec文件的 %install 部分,添加 dos2unix %{buildroot}%{_datadir}/applications/btop.desktop ,使得在执行desktop-file-validate之前将btop.desktop文件中的行结束符转换为LF,解决问题。
- 解决第一个问题后出现第二个错误:
- [ 790s] + dos2unix /home/abuild/rpmbuild/BUILDROOT/btop-1.3.0-3.oe2309.riscv64/usr/share/applications/btop.desktop
- [ 790s] /var/tmp/rpm-tmp.zW1bXC: line 40: dos2unix: command not found
- [ 790s] error: Bad exit status from /var/tmp/rpm-tmp.zW1bXC (%install)
- 我的判断:构建过程中找不到 dos2unix 命令,导致构建失败。应该是因为在构建环境中缺少提供 dos2unix 命令的相关软件包。
- 解决方法: spec 文件中添加一个额外的软件包依赖,在spec文件的%buildrequires部分,添加:BuildRequires: dos2unix
- 有一些包的升级流程比较简单,大概为以下几个步骤
- 先看要求是升级到哪个版本,然后到源码包网站找对应的源码包,进行压缩,在gitee上更新,重新引入
- 然后在spec更改版本号字段,并更改对应的源码包网站,并在源码包字段更改源码包链接
- 可能该软件包在升级的时候添加了一些依赖之类的,根据构建错误进行修改就好
- 在升级一个包的时候,他的源码包地址完全更改了,而我误认为包原地址不会更改(思维误区),后来更改源地址就好了