搭建一个 apt 仓库服务
curl -fsSL https://apt.skiy.net/get.sh | sudo sh
一、APT 服务器配置
- 生成 GPG 密钥
# 生成 gpg key (默认参数值。3072 长度,4年有效期)
gpg --gen-key
# 生成 gpg key (全量自定义配置)
gpg --full-generate-key
以方式一为例:
输入对应的 Real name
和 Email address
后,按 O 确定,显示下图
按 TAB 键
选择 OK
,回车确认
回车确认
...
后续的操作同上
...
最终显示
导出 gpg 公钥
# gpg --armor --export <EMAIL> > idev.gpg
gpg --armor --export report@mail.idev.top > idev.gpg
脚本(点击查看最新):debfetch.sh
https://framagit.org/-/snippets/7181
源码:debfetch.sh
环境变量
APT_ROOT_PATH="${APTPATH:-/root/downloads}"
DEB_POOL_PATH="${DEBPATH:-$APT_ROOT_PATH/pool/main}"
APT_CONF_PATH="${APTCONF:-/etc/apt-ftparchive.conf}"
ORGNAME="${ORGNAME:-idev}"
GPG_KEY="${GPGKEY:-example@example.com}"
可以修改上述代码中的环境变量,或者直接修改全局环境变量
执行脚本
# 首次需执行
curl -O https://framagit.org/-/snippets/7181/raw/main/debfetch.sh && chmod +x debfetch.sh
# 此后更新软件需要使用,具体参数信息可通过 ./debfetch.sh -h 查看
./debfetch.sh -u https://example.com/latest/app.deb
# 自定义环境变量(每次都需要)
GPGKEY=report@mail.idev.top ./debfetch.sh -u https://example.com/latest/app.deb
# 自定义环境变量
export GPGKEY=report@mail.idev.top
./debfetch.sh -u https://example.com/latest/app.deb
- 最终文件目录内容
~/downloads# tree
.
├── dists
│ └── stable
│ ├── InRelease
│ ├── main
│ │ └── binary-amd64
│ │ ├── Packages
│ │ └── Packages.gz
│ ├── Release
│ └── Release.gpg
├── idev.gpg
└── pool
└── main
└── app.deb
或者,将 deb 文件保存到 pool/main
下,再执行脚本更新
bash debfetch.sh
# 或将之移动到 /usr/local/bin/debfetch ,方便更新
mv debfetch.sh /usr/local/bin/debfetch
# 执行 debfetch
- nginx 配置文件中,配置文件中添加的
autoindex on
,如
# root 目录需修改
root /root/downloads;
location / {
autoindex on;
}
部分参考:https://earthly.dev/blog/creating-and-hosting-your-own-deb-packages-and-apt-repo/