谈一下 Archlinux 合作开发与维护的话题
参与过 Archlinux 打包的同学(比如TU),应该知道,Archlinux 是分布式编译,采用 <repo>-<arch>-build
(如extra-loongarch64-build
) 命令在本机的虚拟环境打包,然后通过 <repo>pkg
(如corepkg
) 来提交到中央服务器,并由 dbscripts 包中的一系列脚本(如db-update
) 完成后续进入仓库的工作的。
那目前的 loongarchlinux
为什么还不能做到分布式编译,然后上传进入仓库呢?
因为我在做这个系统时,发现 svntogit-package
和 svntogit-community
git 仓库特别巨大,而我并不需要这么大的东西,我只要最新的某个时间点的状态,并且可以跟踪上游最新版本,方便以后跟着arch的版本滚动升级,所以我重新对这2个仓库进行了处理,形成了现在的 core
、extra
、community
等仓库。从上游的名字和 devtools
的代码都可以看到,archlinux 上游在使用 svn
管理,而我把源码转成了使用 git
来管理。
这就产生了一个严重的问题:用户是可以分布式编译,并通过 commitpkg 提交,但是,现在archlinux 所使用的 dbscripts 我无法使用,导致上传的tar.xz 包无法自动进入合适的仓库,并确保各种验证(packager是否可信任、签名是否正确、git仓库是否同步)正常通过。
为了解决这个问题,我应该修改 devtools 脚本,让它增加上 git 仓库支持,事实上已经有人做了,但是由于一些原因并没有被合并。另一方面 Archlinux 上游也在进行过度,准备从 svn 切换成 git 来管理仓库,并且开发了 arch-repo-management
这个工具,近期改名为 repod
,而且svntogit-package
和 svntogit-community
这两个仓库也有变化,每个软件都走到分支上了,演变的趋势是向着 fedora/debian 那样子,一个软件一个git仓库。目前 repod
的核心功能已经ok,可以完成 db
和 json
的互转,但是管理脚本并没有,只有测试脚本可以验证。总体来说,这个值得期待,但是进展一直比较缓慢。
讲到这里,应该大致明白了,我在等待 repod
的完善,希望直接使用 repod
来代替之前 dbscripts
完成的工作,这样就可以让社区开发者一起来参与维护了,当然,如果有能力的,建议直接去 arch 上游参与 repod
的开发工作。