如何创建自己的apt软件源


原链接

在做Linux软件开发,当成功生成deb文件之后如何把软件包分发给用户呢。通常的做法就是创建自己的apt软件源了。
创建apt软件源有一个非常好用的工具aptly

aptly 软件文档

软件安装

/etc/apt/sources.list 中添加

1
deb http://repo.aptly.info/ squeeze main

添加公钥

1
apt-key adv --keyserver pool.sks-keyservers.net --recv-keys ED75B5A4483DA07C

安装软件

1
2
apt-get update
apt-get install aptly

创建软件源

在自己的服务器上创建软件源。首先修改默认的软件源保存路径

1
vim ~/.aptly.conf

设置root路径, 下面的路径会用来存储软件源数据。根据自己的需求进行设置。后面还需要设置网路服务器保证下面的路径可以从网络访问。所以不要在此文件夹内放其他重要数据。

1
2
3
4
{
"rootDir": "/home/bwbot/data/src/mirrors/packages"
......
}
1
aptly repo create stable

添加软件包

*.deb为你的deb文件名

1
aptly repo add *.deb

发布软件源

1
aptly publish repo -distribution=stable stable

这一步会需要gpg密钥。如果没有就需要自己创建。同时创建完成之后还要把自己的gpg公钥上传到公钥服务器上。如果是Ubuntu的话可以用系统自带的Passwords and Keys进行操作。这个软件自带生成密钥和上传密钥的功能。

在这里插入图片描述

设置网络服务器

上面我们修改了软件源路径,下面我们要设置网络服务器,使得那个路径可以通过http访问。下面是一个nginx的例子配置

1
2
3
4
5
6
7
8
9
10
11
12
13
server {
        server_name mirrors.bwbot.org;
        root /home/bwbot/data/src/mirrors/packages/public;

        location / {
                alias /home/bwbot/data/src/mirrors/packages/public/;
                autoindex on;
                expires 30d;
        }

    listen 80;

}

注意audoindex一定要设置成on

客户软件源设置

当客户要下载软件时在客户机器,首先添加服务器的公钥

1
sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key 7D9C279F

上面是我的例子。其中hkp://keyserver.ubuntu.com:80'是密钥服务器的地址,和上传时自己的选择有关系。7D9C279F是服务器密钥的ID可以通过gpg相关指令查看。

添加服务器软件源地址

1
sudo sh -c 'echo "deb [arch=amd64] http://mirrors.bwbot.org/ stable main" > /etc/apt/sources.list.d/systemback.list'

其中 deb [arch=amd64] http://mirrors.bwbot.org/ stable main为软件源地址,也就是你的服务器的网络地址。systemback.list为创建的软件源文件名称。这个可以根据自己需求进行修改,最后以.conf结尾就可以 了。

然后正常的更新,安装软件就可以了

1
2
apt-get update
apt-get install xxxx