Debian是一个伟大的发行版本,通过Debian自带的Simple-CDD工具,完全可以打造自己的发行版本(实际上,基于Debian或Ubuntu的很多发行版例如zentyal就是利用Simple-CDD制作的发行版,关于如何利用)。发行版本制作完成之后可能需要考虑的另外一个问题是,如何制作自己的软件仓库。本文介绍如何创建自签名的debian或者ubuntu软件仓库。创建的步骤如下:

安装所需工具

本文使用reprepro工具创建软件仓库,首先,安装之。

1
    aptitude install reprepro

创建GPG秘钥

首先运行命令:

1
    gpg --gen-key

选择rsa、秘钥长度(位于1024和4096之间的一个数,默认2048足够了)、秘钥有效期(选择永不过期)、输入姓名和电子邮件(本文以a@btstream.net为例)

创建一个ASCII格式的公钥文件

默认情况下,gpg工具的输出格式是二进制的文件,这个格式不是很适合通过web的形式予以发布,因此将公钥以ASCII格式保存到一个文件里会相对比较合适一些。创建ASCII格式的文件可以使用–armor参数,创建的命令如下:

1
    gpg --armor --export a@btstream.com --output a@btstream.net.key

创建仓库

首先选择一个文件夹,例如/opt/repos/文件夹作为你的软件仓库的主目录,那么,首先在/opt/repos/文件夹下创建conf文件夹

1
    mkdir -pv /opt/repos/conf

编辑/opt/repos/conf/distributions文件,示例内容如下:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
    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和上边配置文件的对应关系):

1
2
3
4
5
6
    $ 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文件如下:

1
2
3
    verbose
    basedir /opt/repos/
    ask-passphrase

options文件定义reprepro工具向仓库中添加deb文件时的行为。注意修改basedir目录与你自己的目录一致。

添加deb包

添加软件包就比较容易了,直接使用如下命令添加:

1
    reprepro includedeb wheezy foo.deb

P.S,很多教程中都多处一步对deb包进行签名的过程,本人按照上述配置进行使用时,不对自己的软件包进行签名一样进行使用

配置Apache服务器

将Apache服务器指向/opt/repos/文件夹即可,这一步不在赘述。

导入key的过程

假设key的位置为:http://localhost/a@btstream.net.key,那么导入的命令为:

1
    wget -O - http://localhost/a@btstream.net.key | sudo apt-key add -