主页 > 打包服务 >

18 软件打承办事 - Open Build Service

浏览1574 好评 0 点赞105

  前面17章介绍了代码编译工具、集成开发环境(IDE)、源码的发布管理(版本控制系统),软件源码从开发到管理、发布走了一遍,下面到怎样把软件源码打包成适合各个版本的Linux,比如Debian/Ubuntu/Deepin会使用deb包,Fedora/openSUSE使用rpm包。不同的Linux发行版和同一发行版的不同版本号的Linux,通常都需要将软件从源码编译组建成二进制格式的deb或rpm包。通过安装deb或rpm包,省去了普通用户编译源码、寻找软件依赖库的繁琐过程,就可以实现傻瓜式安装,省时省力。

  当然还有将一些头文件、库文件打包成devel(或dev)系列的deb或rpm包,用于开发。

  各种各样的Linux都是这些打好的软件包的集合,如果没有deb或rpm之类现成的软件包,那么从源代码编译软件,生成可执行程序或库,对新手来说是一件麻烦的事。软件基本都不是独立的个体,通常会依赖这样或那样的库,很可能在网上找了软件源码来编译,发现怎么搞都不行,很多时候就是依赖的库太多,剪不断理还乱,所以新手就很难弄。

  OBS打包服务的大致工作流程是在本地准备好源代码包,编辑好SPEC文件,然后将各种相关文件提交给OBS服务器,服务器自动根据SPEC文件进行编译链接源代码,为各个版本Linux打包,并检查软件包信息。所以通常都是需要连网操作的。既然是贡献软件包,自然是公开在OBS网站的。 下面先介绍命令行下的osc打包。下节介绍Web页面的提交方式。

  下面就用hellolq.cpp作为例子,打包成rpm发到OBS网站上去。

  然后按ESC键退出编辑模式,再打字 :wq 就可以保存退出vim了。 添加的一段就是表示为openSUSE 12.3版本的32位和64位系统打包。这里做测试,只加了一个,还可以类似地添加多个目标版本。这配置文件是OBS服务器上的,通过远程编辑方式改变配置条目。

  实际上的源码包当然不会只有一个hellolq.cpp,所以这里按照GNU标准,用自动配置工具如autoconf、automake等打了一个带有一些配置文件的源码包:hellolq-1.0.tar.gz 。 一般自动配置工作都是集成开发环境自动做的,所以不用在意生成的一堆配置文件和脚本。其实源代码就只有一个hellolq.cpp。当然感兴趣的可以去搜一下“Linux自动生成Makefile”。

  (需要注意的是automake处理时会添加install-sh、depcomp、missing三个快捷方式到源码文件夹里,这三个快捷方式在本地能用,但远程OBS服务器上是没有的。必须把它们三个的文件本体,从/usr/share/auotomake-

  这就要靠 spec 文件了。除了软件源码,就数 spec 文件重要了。在OBS上打包,至少需要这两个东西。 spec 文件的编写知识很多,但通常情况下,找个差不多的模板, 把软件包的名字、版本、依赖关系之类的改改就差不多了。 对于这里简单的软件包,找了个模板套一下,然后把名字改为 hellolq.spec 。

  这倒数第二段的注释深深地出卖了我,这是从一个打包qt的项目里弄来的spec模板。这个是最简单的模板,可以自己试着玩玩,但是正式的写法最好参考opensuse_zh项目上的软件包的spec文件写法。比如包页面,打开页面里的drcom.spec文件就可以看到里面的内容了。

  如果打包的过程结束,会看到finished字样。finished表示在某个系统平台执行编译链接、安装检查的过程结束,finished不是说成功也不是说失败。如果OBS服务器打包过程出错,以后查看results会出现failed字样。如果打包过程没问题,以后查看results会出现succeeded字样。

  OBS是很强大的平台,熟悉了SPEC文件打包之后,不管去其他哪个Linux平台打包都是可以举一反三的。学习打包可以锻炼自己,也能为开源社区出力。当然,可以学到很多知识。打包出了问题实在不好解决,就去openSUSE中文社区或openSUSE官方论坛求助。推荐几个网址,可以多去学学。

本站文章于2019-09-26 19:43,互联网采集,如有侵权请发邮件联系我们,我们在第一时间删除。 转载请注明:18 软件打承办事 - Open Build Service
已点赞:105 +1

上一篇:

下一篇:



关于我们

  • 关于我们
  • 品牌介绍
  • 诚聘英才
  • 联系我们

学生/家长

  • 帮我选学校
  • 帮我选专业
  • 投诉/建议

教育机构

  • 如何合作
  • 联系方式

其他

  • 投稿合作
  • 权利声明
  • 法律声明
  • 隐私条款
全国统一客服电话
4006-023-900
周一至周六 09:00-17:00 接听
IT培训联盟官方公众号
扫描访问手机版
家电维修|北京赛车pk10