openSUSE:BJTU Underground Repo(Dead)

跳转至: 导航, 搜索
Icon-obsolete.png 這篇文章現在已經過期了!
原因:User:MargueriteSu 标记
請參考這篇文章的 討論 頁,以獲得進一步資訊。
本文介绍 openSUSE 的暗黑源:openSUSE Underground。

为什么要一个暗黑源?

官方只有在有分发(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 - 服务器端脚本的编写和服务器设置与日常维护
  • 北京交通大学 - 提供网络存储空间和带宽

参考文献