OBS 的 Archlinux 后端

marguerite | 2012/08/24

原文来自姐妹站:suse.ws。不强求,但请尽力至原文评论。

这个都市传说最早开始于 2008 年的 GSoc 项目,当时的项目主页描述的架构是这样的:

* 移植 Archlinux 的打包工具到 RPM
* 一个 perl 模块,可被 OBS 的主后端调用
* 一个编译脚本
* UI 上的整合

后来那个 GSoc 学生病了。于是就不了了之了。根据最后的片纸记录,当时的支持情况是这样的:

* Arch 编译模块可以解析 PKGBUILD,提取依赖,从 pkg.tar.?z 解析 PKGINFO
* 获取源的元数据和软件包信息的助手脚本
* 设置 Arch 编译环境
* 编译脚本

后来这一传说反复穿梭于 openSUSE 邮件列表中,记得在 IKDE 群中我很早就说过一句,但是大家让我找证据,我又忘了 Adrian 哪里说的了。于是月初问过一次,得到的热心人答复是:

完成度已经很高啦。现在缺的就是 Publisher 中的源创建步骤。

于是众人纷纷表示 233。不能创建源就表示完全没有编译依赖,相当于没有么。

记得当时我又提出一点是 Arch 的社区服务器不行,根据 OBS 镜像的官方数据,OBS 每月的流量是 10T。这个流量我估计除了 Debian 别的任何社区发行版都不可能承受。目前 OBS 支持非 SuSE 系发行版的方法是缓存它们的 ISO,也就是 release 当天的 ISO。而 Archlinux 很明显没有这样一个 basis。而随用随取的方法会给社区发行版的服务器造成天量流量和服务器 I/O 和负载。

当时记得大家做的结论是要么 SuSE 给 Arch 出个镜像,要么即使 Fedora 的 Update 源支持的那天,Arch 也很难支持。

今天这个问题得到的 OBS 管理员 Adrian 的官方答复

背景是在一个聊 Unity on openSUSE 的帖子里,这个不止是 Nelson Marques 在搞,之前他玩剩了 GNOME:Ayanata 也被 Damian Ivanov 和 Xiao-Long Chen (中国人。但我不认识。也是折腾帝。) 接管了,陈小龙完成了 Unity 在 openSUSE 和 Archlinux 上的移植,但完成度尚未披露,Damian 问 Adrian Arch Backend 的支持情况,Adrian 答复说:

* Fedora Updates 源不添加的原因是因为它不是静态的,而 OBS 的按需下载功能还没做好,也就是说如果加上了,Adrian 要去手动同步,他不想找事;
* Arch Backend 已经推送到了 build.opensuse.org,已经全部完成,但是只是实验性的,所以还没官方发布。

于是折腾帝 Damian 就去试了一下

目前存在的问题是:

* 不支持 Depends 运行依赖,只支持 MakeDepends 编译依赖 (被迅速的修复了)
* 不支持 PKGBUILD 中直接从源代码存放地下载源代码。这个功能永远不会支持。因为编译环境是一个没有网络连接的 VM。目前的解决办法是使用 OBS 服务去下载(这个随便问个像我这样的 OBS 野生大大就知道怎么玩了)。后期准备加个 parser,来转换 PKGBUILD 中的下载地址为服务。
* 不支持 Arch:community 源,因为那个源跟 OBS 本身一样变动太快。但你可以在 OBS 上编译里面的 PKGBUILD。后期发布时可能会选择导入该源到 OBS。
* 版本旧。当然现在不是很旧。由于按需下载功能目前还没有,是手动导入的相对稳定的 Arch 源,所以可能后期会慢慢变旧。不想旧就去开发按需下载吧程序员们。

测试软件包在此:
home:damianator:branches:GNOME:Ayatana

OBS 源代码在此:
https://github.com/openSUSE/open-build-service

Marguerite

openSUSE Member, neverland author, Fcitx/Hotot contributor and Weng Xuetian's friend.
Tags: , ,

9 FEEDBACKS

Leave a Reply to muxueqz Cancel reply

Your email address will not be published. Required fields are marked *

Note: Commenter is allowed to use '@User+blank' to automatically notify your reply to other commenter. e.g, if ABC is one of commenter of this post, then write '@ABC '(exclude ') will automatically send your comment to ABC. Using '@all ' to notify all previous commenters. Be sure that the value of User should exactly match with commenter's name (case sensitive).

This site uses Akismet to reduce spam. Learn how your comment data is processed.