转自:http://www.liangsuilong.info/?p=496
感谢Kaio的帮助,我也在我的Fedorapeople空间建了个yum,放一些Fedora官方和RPMFusion都没有的一些包吧。
实际上,这种办法不仅仅适用于fedorapeople空间,只要有http空间,即使没有任何脚本语言的支持,都可以建立一个源的。况且fedorapeople只提供了150MB的空间,多放几个包就不够位置。期待Jesse Keating计划的KoPeR能够尽快上线,因为KoPeR会有1GB的空间,可是现在看来是多么的遥遥无期。
好了,简要的说说办法吧!
首先你要拥有一个FAS的帐号,并且签署了CLA协议,这是你获得fedorapeople空间的前提。完成以后,导入你的SSH公钥到FAS帐号,因为fedorapeople空间使用的是SSH连接,这可以确保连接期间的安全。
然后就是打包工序,你要预先制作好RPM包。同时为了保证RPM质量,你最好把软件包防盗Koji编译打包一次,以确保软件无误,而且可以获得多个架构的RPM包。Koji的用法如下
koji build –nowait –scratch dist-fN foo.src.rpm
N是Fedora的版本号,foo.src.rpm则是软件包的SRPM包。
随后建立yum源的目录树,并把Koji编译的RPM包逐一地放到目录树对应的位置。
比如我的目录树,yum源是放在repo目录里面:
repo/
12/
i386/ x86_64/
软件包则更根据对应的架构,分别放置到i386和x86_64这两个目录里。紧接就是使用createrepo建立yum源的数据文件,每一个放置RPM包的目录都应该建立repodata的目录防止这些数据文件。
例如我的做法:
createrepo repo/12/i386
createrepo repo/12/x86_64
当目录被更改以后,都要使用createrepo一次刷新repodata文件。如果放置RPM包的目录十分巨大,可以考虑增加–update参数来加快刷新进度。
最后,把repo目录里的所有文件上传到fedorapeople空间即可。使用什么方法上传都没有区别,scp和rsync也行,因为fedorapeople需要使用SSH来传送数据。如果是其他空间,则可以根据实际情况而定。使用rsync的方法如下
rsync -rav yum liangsuilong@fedorapeople.org:~/public_html/ –delete
-r是递归,-a是保留文件原有权限,-v是显示传送信息,–delete是把本地删除的文件在远程服务器上也一并删除。此外,fedorapeople空间只会公开public_html目录里的文件,所以你应该把yum源同步到public_html里。
建立yum源则到此为止,为了让其他人使用你的个人源,你需要书写一个.repo文件,让用户下载到/etc/yum.repos.d/目录内。以下是我的范例,可以参考一下。
[liangsuilong]
name=Liang Suilong
baseurl=http://liangsuilong.fedorapeople.org/repo/$releasever/$basearch/
enabled=1
gpgcheck=0
$releasever是Fedora版本号,$basearch是系统架构。
如果你想下载我的.repo文件,可以点击http://dl.dropbox.com/u/1352061/liangsuilong.repo。
暂时只会提供linux-fetion,osd-lyrics,w32codecs这三个包,当然我也会把最新的iptux和shutter放在上面,稍候还会准备放上w64codecs和ibus-sunpinyin。这空间真的很小很小啊!
因为这是一篇日志,稍候我会整理好一份文档放到Fedora的官方wiki上。看看我的蹩脚英语能否憋出一份英语版本出来?拭目而待吧!
最后,再次感谢Cauis ‘kaio’ Chance的鼎力帮助!