[FZH] 致微菜:SPEC 仓库

Liang Suilong liangsuilong at gmail.com
Tue Jul 19 11:58:15 UTC 2011


本来这个帖子我应该昨天就写的,但是找不到电脑,在手机上写太长了不方便,所以黑兄就迫不及待地写了出来。有这个想法的原因是怕微菜同学把 Fedora
”和平演变“成 Gentoo,当然以上仅仅是一个玩笑。细想一下真的有这个需求。

第一点,得说一说 Fedora 和 RPM Fusion 的政策,他们都不太允许有争议和分发困难的软件进入源。这会导致 Fedora
安装闭源软件会有不方便的地方。比如安装 Flash Player 和 Sun JDK 就比较麻烦了。

第二点,即使一个新软件符合政策,也需要等待至少两周的时间进行从 Review 到推送到 updates
的流程,而更新一个已经入源的软件包也需要一周的时间。这种效率在当前我觉得会有点儿慢,再加上 Packager 的个人因素,用户等待更新的时间随时会增加。

第三点,Fedora 没有 Ubuntu 的 PPA 服务,即使有,习惯了 Koji 即时开始编译打包我也没有耐性在 Launchpad
上排队。Fedora People Repo 只是一个临时措施。况且如果 Fedora 搞 PPA,同样会受制于 Fedora 的政策。

所以我跟黑日白月兄萌发出一个在 Fedora 实现类似 apt-build 和 yaourt 的 yum-build 想法,构建一个类似 AUR
的东西。详细的内容黑日白月兄已经在邮件中说了,我在补充一些吧。

1. 关于 SPEC 仓库,我觉得可以按照 Fedora 官方的 Git 仓库
http://pkgs.fedoraproject.org/gitweb/ 管理 SPEC
和补丁。把生成元信息的工作放回用户本地。这样子我觉得更加方便开发者,Git 应该很多人都会用吧。而且不用担心 Fedora
官方不支持不给我们服务器资源。大不了我们就放到 github (假如 Google Code 突然大发慈悲支持 Git
也可以,最近这个传言很多。)或者自己弄个 VPS 搞个 Git 服务器也行。用 Git 同步仓库的内容也很快。而且用 Git 应该跟 pkgdb
结合也很方便。

2. 在 rpmbuild 编译打包好一个 rpm 包以后,把 RPM 包和 SRPM 包放到一个指定的目录,借助 yum-plugin-local
生成一个本地 RPM 源,为的是比对 Git 仓库的元信息,如果版本号一致就不再重新编译打包,可以直接用回之前的软件包。

3. 配合 ccache,为的是节省编译的时间,节能减排的任务还是很繁重滴...

先说这么多,细节的东西以后在项目启动的时候慢慢再讨论。如果有兴趣的朋友也可以加入到这个主题中。

顺手把这份邮件 cc 给 yum-axelget 的后续改进者 Ray Chen 大哥的邮箱。


Fedora && Debian User, former Ubuntu User
My Page: http://www.liangsuilong.info
Fedora Project Contributor -- Packager && Ambassador
https://fedoraproject.org/wiki/User:Liangsuilong


2011/7/19 Tommy He <lovenemesis at fedoraproject.org>

> 致微菜
>
> 看到你在 emerge-rpm 方面的进展值得鼓舞,下面这个 SPEC Repo 的权当另一个挑战。
>
> 一开始,可以尝试下以下命令组合:
>
> yum-builddep a.spec && spectool -g a.spec && rpmbuild -ba a.spec
>
> a.spec 为任意 spec 文件。
>
> 如果 SPEC 文件描述无误,那么以上命令组合将完成从下载源代码包,检查并安装编译依赖条件,最后生成 rpm 和 srpm 的过程。
>
> 经过和 liangsuilong 的讨论,这种方式和 gentoo 基于 portage 的源代码分发方式十分类似,并且:
> 1. 不破坏现有的 RPM 体系结构
> 2. 只要修改 SPEC 文件,可以轻松实现远程或本地定制化补丁的整合。
> 3. 无需走 Fedora 仓库的审核过程,及时响应新软件及鸡血补丁
>
> 那么怎样让它更像 Portage 呢?liangsuilong 和我的想法的是实现一个 SPEC 仓库,该仓库应该具有如下功能:
> 服务器端:
> 1. 存储 SPEC 文件
> 2. 元信息抓取工具,可以从 SPEC 中抓取基本的信息,包括应用了哪些补丁等,放置到单独一文件中以备查询
> 客户端:
> 1. 可以从服务器端获取、缓存并更新 SPEC 文件
> 2. 可以读取服务器端的元数据,可以显示并依据规则查询基本信息
> 3. 将 yum-builddep a.spec && spectool -g a.spec && rpmbuild -ba a.spec
> 封装到一起,可以实现类 apt-build 或 portage 的语法。
>
> 就这些了,不知道微菜承受的起不?
>
> --
> Take a Deep Breath out of Windows
>
> https://fedoraproject.org/wiki/User:Lovenemesis
> _______________________________________________
> Chinese mailing list
> Chinese at lists.fedoraproject.org
> https://admin.fedoraproject.org/mailman/listinfo/chinese
>


More information about the Chinese mailing list