Debian是一个伟大的发行版本,通过Debian自带的Simple-CDD工具,完全可以打造自己的发行版本(实际上,基于Debian或Ubuntu的很多发行版例如zentyal就是利用Simple-CDD制作的发行版,关于如何利用)。发行版本制作完成之后可能需要考虑的另外一个问题是,如何制作自己的软件仓库。本文介绍如何创建自签名的debian或者ubuntu软件仓库。创建的步骤如下:
安装所需工具
本文使用reprepro工具创建软件仓库,首先,安装之。
aptitude install reprepro
创建GPG秘钥
首先运行命令:
gpg --gen-key
选择rsa、秘钥长度(位于1024和4096之间的一个数,默认2048足够了)、秘钥有效期(选择永不过期)、输入姓名和电子邮件(本文以a@btstream.net为例)
创建一个ASCII格式的公钥文件
默认情况下,gpg工具的输出格式是二进制的文件,这个格式不是很适合通过web的形式予以发布,因此将公钥以ASCII格式保存到一个文件里会相对比较合适一些。创建ASCII格式的文件可以使用–armor参数,创建的命令如下:
gpg --armor --export a@btstream.com --output a@btstream.net.key
创建仓库
首先选择一个文件夹,例如/opt/repos/文件夹作为你的软件仓库的主目录,那么,首先在/opt/repos/文件夹下创建conf文件夹
mkdir -pv /opt/repos/conf
编辑/opt/repos/conf/distributions文件,示例内容如下:
Origin: btstream's repo
Label: btstream's repo
Codename: wheezy
Architectures: i386 amd64
Components: main
UDebComponents: main
Description: btstream's repo
SignWith: E123D553
Origin: btstream's repo
Label: btstream's repo
Codename: testing
Architectures: i386 amd64
Components: main
UDebComponents: main
Description: btstream's repo
SignWith: E123D553
本配置文件包含了两个发行版,一个是wheezy,另外一个是testing。需要注意的是SighWith的取值,这个取值是希望签名的key的pub的id,列出系统的key命令如下所示(注意pub的id和上边配置文件的对应关系):
$ gpg --list-keys
/home/joe/.gnupg/pubring.gpg
-------------------------------
pub 2048R/E123D553 2011-08-03 [expires: 2012-08-02]
uid Joe User (Some organization) <joe.user@domain.com>
sub 2048R/F2495744 2011-08-03 [expires: 2012-08-02]
另外,使用UDebComponents选项可以向软件仓库中添加udeb软件包,关于udeb不在详细介绍。
创建/opt/repo/conf/options文件如下:
verbose
basedir /opt/repos/
ask-passphrase
options文件定义reprepro工具向仓库中添加deb文件时的行为。注意修改basedir目录与你自己的目录一致。
添加deb包
添加软件包就比较容易了,直接使用如下命令添加:
reprepro includedeb wheezy foo.deb
P.S,很多教程中都多处一步对deb包进行签名的过程,本人按照上述配置进行使用时,不对自己的软件包进行签名一样进行使用
配置Apache服务器
将Apache服务器指向/opt/repos/文件夹即可,这一步不在赘述。
导入key的过程
假设key的位置为:http://localhost/a@btstream.net.key,那么导入的命令为:
wget -O - http://localhost/a@btstream.net.key | sudo apt-key add -