OBS,Opensuse Build Service,是一个类似ppa的在线打包服务,和ppa相比有如下优点:1、不限于一个发行版,根据说明,支持Fedora,Opensuse,Debian,Ubuntu,CentOS,RHEL,Mandriva等等发行版,2、管理工具有SCM的特性,会记录版本,3、使用https协议进行交互传输,和ppa的ftp相比使用代理更加方便(我是悲剧的教育网),4、比ppa使用简单。其他的优点就是使用上的感受了,几乎不用排队,而且系统速度明显比ppa高出一截,当然这不好说……
那么怎么使用呢?首先到https://build.opensuse.org/ 注册并登录一个帐号,这时候会分配给你一个默认的project,名称为home:username。这时候你就已经可以开始工作了,这里和ppa相比少了进行公钥验证的步骤,快得多。然后你可以通过web ui添加你自己的包。更方便的是你可以通过对别人的包建立一个fork来建立自己的包,更加方便快捷。
然后你需要的就是上传你的代码及spec文件(rpm包,老实讲obs的deb和ubuntu的文件似乎有点不同……没有认真研究),这时候系统就会好心的帮你做好所有事,而且如闪电一般。
这时候我想讲讲我走的一个弯路。我发现web ui上面似乎有一个很方便的功能,为一个包添加一些service,在每次启动编译之前都会主动执行一次,似乎支持从svn和git上面直接抓代码,我当时一看,这感情好啊,然后就抓代码。但是杯具的是,其他各种service的参数几乎都没有说明(比如解压),看得我一头雾水,跑去浏览别人的obs,发现要不就是失败,要不就是没有用这项功能。总之我的结论是service这个功能缺少文档……还不太完善,不推荐使用。
那么就需要使用opensuse提供的一个cui工具,osc。
首先进行checkout(类似svn)
osc checkout home:<username>
你会得到一个目录home:<username>,目录下有你的包的对应目录。
然后执行:
osc meta pkg -e home:<username> <packagename>
建立你的包,我没有用这个命令,而是在web ui创建的(等价),所以我不是很清楚这个命令具体情况……
再执行
osc up
进行更新,怎么样,和svn 很像吧。
剩下你所需要做的就是
osc add <filename>
osc commit
添加你的文件并提交。
然后obs就会happy的自动帮你编译好啰。
慢着,其实这时候你还忘了一件事,就是指定你要编译哪些发行版的包,你需要在你的project首页,有一个repositories的链接,这里面就是指定编译哪些发行版的包的地方了,所以你遇到的另外一个问题就是,如何用一个spec编译多个发行版的包。其实也很简单,不同发行版会指定一些不同的变量从而在spec文件当中判断的,比如我就用了:
%if 0%{?suse_version}
BuildRequires: dbus-1-devel
%else
BuildRequires: dbus-devel
%endif
这段代码同时处理fedora和opensuse。
obs拯救世界,ppa一边歇着去吧。
看来还是挺麻烦……
话说阁下不会是想放弃ppa重新用OBS构建deb包吧?
kde-app上貌似蛮多程序的deb包都是用obs弄的。