Aptly

Aptly 是一个用于创建和管理 Debian 软件包仓库的工具。它为开发人员和系统管理员提供了一种灵活且强大的方式来处理 APT 仓库。Aptly 支持本地存储库的创建、远程存储库的镜像、快照和发布管理等功能。

安装aptly

1
sudo apt install aptly

数字签名

GPG(GNU Privacy Guard)是一种用于数据加密和签名的免费开源软件。它是 OpenPGP 标准(RFC 4880)的实现,提供了一套用于保护通信和数据的工具。GPG 允许用户加密数据、创建和验证数字签名,以及管理密钥。

生成gpg数字签名

1
gpg --gen-key

按照提示填写信息即可

生成之后会出现

1
2
3
4
pub   rsa4096 2023-01-01 [SC] [expires: 2025-01-01]
ABCDEF1234567890ABCDEF1234567890ABCDEF12
uid [ultimate] Your Name <your.email@example.com>
sub rsa4096 2023-01-01 [E] [expires: 2025-01-01]

我们将密钥导出

1
gpg --export -a ABCDEF1234567890ABCDEF1234567890ABCDEF12 > public.key

导出之后在我们的设备中使用apt-key add 将密钥导入

1
apt-key add public.key

注意事项

aptly时区别用户的,如果你使用默认用户创建了一个仓库,切换到root或其他用户再去操作仓库是不存在的。

请使用同一用户完成以下操作

创建仓库

首先我们创建一个名称为 simple-repo的仓库

1
aptly repo create simple-repo

添加deb包

假设我们有一个名为 deb_1.0_aarch64.deb的包

使用以下命令将包添加到仓库

这里也可以使用路径将文件夹下包全部添加

1
aptly repo add simple-repo deb_1.0_aarch64.deb

创建快照

从simple-repo创建一个名称为simple-repo-snapshot的快照

1
aptly snapshot create simple-repo-snapshot from repo simple-repo

发布快照

1
aptly publish snapshot -distribution=stable -gpg-key=ABCDEF1234567890ABCDEF1234567890ABCDEF12 simple-repo-snapshot

aptly默认将我们的repo发布到/home/user/.aptly/public目录下,我们可以在.aptly.conf中对其目录进行修改

常用命令

1
2
3
4
5
6
7
8
9
10
11
12
aptly repo create <name> #创建仓库
aptly repo drop <name> #删除仓库
aptly repo list #查看所有仓库

aptly anapshot create <snapshot-name> from repo <repo-name> #创建快照
aptly anapshot drop <name> #删除快照
aptly anapshot list #查看左右快照

aptly publish snapshot <name> #发布快照
aptly publish snapshot #查看更多用法
aptly publish drop <name> . #删除快照
aptly publish list #查看所有快照

配置nginx

我们在nginx中的配置中进行以下修改

添加location块

因为特殊需要我使用了alias,如果你是单纯为repo创建的站点使用root即可

1
2
3
4
location /apt/simple-main {
alias /root/.aptly/public/;
autoindex on;
}

添加软件源

在客户端中修改sources.list

添加deb http://yourdomain.com/stable main

更新包列表并安装包

1
2
sudo apt update
sudo apt install mypackage