openSUSE:BJTU Underground Repo(Dead)
這篇文章現在已經過期了! 原因:由 User:MargueriteSu 标记 請參考這篇文章的 討論 頁,以獲得進一步資訊。 |
目录
为什么要一个暗黑源?
官方只有在有分发(redistribution)许可的情况下才会以 Non-free 软件仓库的模式分发非自由软件(包括非开源但免费使用的软件、以及商业软件,但必须得是有版权的)。但国内大部分软件的协议问题就是一团乱麻,全凭嘴说。所以这部分也怪不了人家官方。但也有解决的好的,比如爱壁纸; 而专利软件则完全禁止借助官方平台发布,因为国外专利官司愈演愈烈,openSUSE 项目不想蹚浑水。而特殊国情让我们对这部分看得很淡。所以这部分我们得自己解决。
服务目标
由于目前是成员本机编译,所以只提供当前稳定版本的 i586 和 x86_64 软件包。当前稳定版本是 openSUSE 12.2。
网页访问
http://mirror.bjtu.edu.cn/opensuse-underground
直接访问北京交通大学镜像站是找不到这个链接的,因为我们是暗黑源哦。
添加软件仓库
sudo zypper ar -f http://mirror.bjtu.edu.cn/opensuse-underground opensuse-underground
或在 YaST 控制中心 => 软件源 => 添加 => HTTP => 输入名称和网址
记得勾选「保留已下载的软件包」。
本软件仓库只支持 http 80 端口访问。
软件包列表
不提供。只告诉你,将会很全。
当然你可以在线看,也可以在 YaST 或 zypper 中看。
上传软件包
需要权限。只有经过 MargueriteSu 讨论 - 贡献 认可的打包者才可以上传。目前还没有别的人可以发权限给你。未来会增加人数。
撷取整个软件仓库
首先你要 wget 整个源。
注意,由于服务器只接受 80 端口,因此没法使用 scm 进行管理。为了不每次都 wget 整个源,我们使用的方法如下:
在线查看 ChangeLog 文件。把你本地和服务器上的差异软件包都下载回来。当然 repodata 不用,一会儿你要重新生成整个 repodata。
打包
然后本地打包。为了控制质量,只接受本地 osc 打包且通过 rpmlint 检测的软件包。会不定期抽检。保留打包者造成用户系统垃圾或漏洞时取消权限的权利。
软件包签名
OBS 上是无需打包者操心这个问题的,但我们这个仓库使用 createrepo 建立的,所以需要手动签名。(暂时,北交的镜像管理员正帮助我们努力实现在线签名脚本。)签名方法如下:
导入 GPG 密钥
可以使用 kgpg 或 gnome-gpg 来导入,也可以使用命令行来导入:
gpg --import ~/opensuse-underground.gpg // 公钥 gpg --allow-secret-key-import --import ~/opensuse-underground-private.gpg // 私钥
至于那两个文件,自然是我邮件你的。
修改 RPM 软件包配置,使用 GPG 签名
echo %_signature gpg >> ~/.rpmmacros echo "%_gpg_name 密钥名称" >> ~/.rpmmacros
密钥名称使用 gpg --list-keys 查看(在你导入了以后):
gpg --list-keys /home/marguerite/.gnupg/pubring.gpg ----------------------------------- pub 1024D/A82ECBF6 2012-03-22 uid 瑪麗蘇 (瑪嘎學姐的私人源) <*@marguerite.s*> sub 1024g/BD500B92 2012-03-22
pub 1024D/C9B9ECD4 2012-06-07 [有效至:2013-06-07] uid Marguerite Su (瑪麗蘇的百合 PPA) <*@marguerite.s*> sub 1024g/1C79C962 2012-06-07 [有效至:2013-06-07]
pub 1024D/9C800ACA 2000-10-19 [有效至:2014-05-03] uid SuSE Package Signing Key <build@suse.de> sub 2048g/8495160C 2000-10-19 [有效至:2014-05-03]
签名打包好的 RPM
rpm --addsign package_name.rpm Enter pass phrase: Pass phrase is good.
密码自然也是我告诉你的啦。
重新制作软件仓库架构
createrepo 这个程序创建的是 yum 格式的软件源,因此每次都要重新运行一遍。(争取未来也把这部分放到服务端去做)
你需要 sudo zypper in createrepo 这个软件包。
具体请见 SDB:创建你自己的软件源#创建一个 YUM 风格的软件源。
上传
你需要上传 repodata 文件夹和你做好的那个 rpm 到相应目录。
有一个批量上传的脚本 batch_upload.sh,用于 repodata 这样的文件夹。然后打开它你能明白传单个文件应该用什么命令。由于服务器安全考虑,该脚本只邮件给认可的上传者。
上传 ChangeLog
续写 ChangeLog 文件,格式如下:
--------------------------------------------------------------------- 2012-10-23 20:43 UTC+0800 MargueriteSu <i@marguerite.su> - upload: * x86_64/nvidia-computeG02-304.43-0.x86_64.rpm * ...
一条一条写,这样其他上传者在本地使用 ls -l 命令就可以看到他的上次修改时间:
ls -l drwxr-xr-x 1 marguerite users 280 10月 22 22:37 src
这期间变更了哪些软件包他就可以清楚的通过 ChangeLog 知道。
呜谢
- 北交镜像管理员 ideal Shang - 服务器端脚本的编写和服务器设置与日常维护
- 北京交通大学 - 提供网络存储空间和带宽