原链接
在做Linux软件开发,当成功生成deb文件之后如何把软件包分发给用户呢。通常的做法就是创建自己的apt软件源了。
创建apt软件源有一个非常好用的工具aptly
aptly 软件文档
软件安装
在
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的话可以用系统自带的
设置网络服务器
上面我们修改了软件源路径,下面我们要设置网络服务器,使得那个路径可以通过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; } |
注意
客户软件源设置
当客户要下载软件时在客户机器,首先添加服务器的公钥
1 | sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key 7D9C279F |
上面是我的例子。其中
添加服务器软件源地址
1 | sudo sh -c 'echo "deb [arch=amd64] http://mirrors.bwbot.org/ stable main" > /etc/apt/sources.list.d/systemback.list' |
其中
然后正常的更新,安装软件就可以了
1 2 | apt-get update apt-get install xxxx |