Translation(s): English - 한국어(Korean) - 简体中文
本文档总结了设置Debian软件包仓库的过程。它不涉及描述Debian仓库的格式。
我们已尽力在撰写时提供最准确的信息。如发现任何错误,请予以更正。
Contents
Debian 仓库类型
从用户角度来看,存在2种类型的仓库:
归档风格 |
apt行内样式 |
apt-pinning |
secure APT |
状态 |
官方归档 |
"deb http://example.org/debian unstable main" |
支持 |
支持 |
首选 |
简单归档 |
"deb http://example.org/debian ./" |
不支持 |
支持 |
已弃用 |
这些归档具有不同的元数据结构。两种归档都可以存储实际的软件包文件。许多较早的仓库操作指南(例如旧版的"Debian参考手册(sarge)"和"APT操作指南(sarge)")介绍了创建"简单归档"的方法,但这些指南存在问题,因为由于两种Release文件的冲突,"简单归档"缺乏对APT首选项所使用的apt-pinning元数据的支持。
为了兼容安全APT,现代软件包归档必须使用OpenPGP进行签名。
参考资料:
Debian中的软件包签名 (DDP: Debian安全手册)
Debian软件包管理内部机制 (DDP: Debian参考手册)
仓库使用说明
创建仓库使用说明的最佳实践可在RepositoryInstructions中找到。
Debian仓库生成工具
可以使用以下工具创建类似官方归档的完整软件包归档:
- dak
- mini-dak
可以使用以下工具在具有shell账户的网络服务器上创建私人软件包归档(PPA):
- reprepro
- mini-dinstall
people.debian.org已安装这些软件包。在这些主机上创建的PPA归档应该仅用于小型低流量的实验性归档。
请在未咨询主机服务器维护人员的情况下,不要运行大流量仓库。
dak (Debian 归档工具包)
- 目标:托管官方Debian仓库
- 优点:
- 是官方解决方案
- 缺点:
- 依赖python和PostgreSQL
- 缺乏文档
- 为大型仓库设计
下载:git仓库
- 发行版:不在Debian中
- 依赖:
- python
- postgresql(可选)
- 自动仓库:支持
- 接收机制:支持
- 软件池:支持
- OpenPGP签名:支持
- 无.changes文件的.deb包导入:不支持
- 每个包的多个版本:不在同一个Packages实例中
Wiki页面:dak
mini-dak
- 目标:托管新的Debian架构(使用shell脚本对dak的部分和轻量级重新实现,无数据库依赖)
- 优点:
- 易于设置:编辑配置文件并运行脚本生成整个结构
- 无数据库(软件池即是数据库)
- 保留所有.changes文件以便日后导入主仓库
- 支持邮件通知和详细日志记录
- 自动包过期处理
- 仓库快照
- 支持从.changes文件的Distribution字段获取多个套件
- 额外支持多池(将每个架构分割到自己的池中,便于部分镜像)
- 基于OpenPGP公钥的上传访问控制列表
- 通过ssh推送镜像
- 缺点:
- 在大型仓库上运行缓慢(主要因为不使用真实数据库)
- 主要作为从属归档编写和测试,因此可能有一些硬编码需要修复才能作为主服务器工作
- 仍有一些问题需要修复
- 发行版:不在Debian中
- 依赖:('grep Requires: *'在源码树中)
- apt-utils
- procmail
- gnupg
- wget
- ssh(可选)
- bzip2(可选)
- quinn-diff(可选)
- 自动仓库:支持
- 接收机制:支持
- 软件池:支持
- OpenPGP签名:支持
- 无 .changes 文件的 .deb 包导入:不支持
- 每个包的多个版本:??
- 使用站点:
reprepro
- (原名为mirrorer)
- 目标:在pool/目录中存储文件的本地Debian软件包仓库
- 优点:
- 严格检查输入内容,不需要数据库服务器
- 缺点:
- 选项和命令众多,对初学者使用困难
软件包:reprepro
- 自动仓库:支持
- 接收机制:支持
- 软件池:支持
- OpenPGP签名:支持
- 无 .changes 文件的 .deb 包导入:支持
- 每个包的多个版本:不在同一个Packages实例中
手册:有
- 操作指南:
简短操作指南(官方)
设置自己的自动Debian仓库请参见这篇关于reprepro的文章。该链接有些过时,但仍包含一些有用信息。
使用apache2和签名密钥设置reprepro(意大利语)https://web.archive.org/web/20190427031534/http://www.fabreg.it/reprepro-repository-debian-43/
创建自己的带签名的APT仓库和Debian软件包 作者:Jon Cowie
mini-dinstall
- 目标:dak的微型版本
- 优点:
- 不需要PostgreSQL数据库
- 占用资源少
- 缺点:
- ?
软件包:mini-dinstall
依赖:unstable/devel/mini-dinstall
- apt-utils
- python
- python-apt
- 自动仓库:支持(?)
- 接收机制:支持
- 软件池:不支持
- OpenPGP签名:支持(文档中提供外部脚本和设置示例)
- 无 .changes 文件的 .deb 包导入:不支持
- 每个包的多个版本:支持(参见keep_old选项)
- 操作指南:
使用dput + mini-dinstall简化people.d.o上传 作者:Stefano Zacchiroli
本指南指导您在people.debian.org上设置mini-dinstall。支持安全apt和远程签名。
debarchiver
- 目标:制作dak的简化版本
- 优点:
- 使用cron任务的易用接收机制 - 即使在远程系统上
- 可以通过以下方式将软件包移入发行版:
- 从.changes文件读取Distribution值
- 直接将整个软件包放入distributions-incoming目录
- 标准仓库(可以被固定)
- 缺点:
- 目前没有软件池架构
- 缺少一些有用的检查
- 需要手动清理
软件包:debarchiver
- adduser
- apt-utils(推荐)| dpkg-dev
- opalmod(Perl模块)
- gnupg(可选)
- 自动仓库:支持
- 接收机制:支持
软件池:不支持(但在BTS中有建议)
- OpenPGP签名:支持(使用gnupg,Sarge后特性)
- 无 .changes 文件的 .deb 包导入:??
- 每个包的多个版本:??
- 操作指南:
意大利语操作指南用于本地Debian软件包镜像(类似apt-proxy)
debpool
- 目标:使用软件池布局的轻量级dak替代品
- 优点:
- 无外部依赖
- 易用的接收机制
- 标准仓库(可以被固定)
- 缺点:
自2008-10-30起未积极维护(参见最新开发)
- 不检查旧包是否被新包替换
- 无事件通知(添加新包时没有邮件通知)
软件包:debpool(已移除)
发行版:experimental
- 依赖:
- perl
- gnupg(可选)
- 自动仓库:支持
- 接收机制:支持
- 软件池:支持
- OpenPGP签名:支持(使用gnupg)
- 无 .changes 文件的 .deb 包导入:??
- 每个包的多个版本:??
Wiki页面:debpool
DebMarshal
- 目标:维护来自上游发行版的多个快照,以允许分阶段部署
- 优点:
- 快速
- 不需要数据库服务器(使用BerkeleyDB)
- 缺点:
- 缺乏文档
- 未发布(无可用版本,SVN仓库只有trunk)
- 发行版:不在Debian中
- 自动仓库:支持
- 接收机制:支持
- 软件池:支持
- OpenPGP签名:支持
- 无.changes文件的.deb包导入:??
- 每个包的多个版本:??
Wiki页面:debmartial
演示文稿:ODP和PDF文件
由Google构建供其使用。
apt-ftparchive
- 目标:dpkg-scanpackages和dpkg-scansources的超集
- 优点:
- 除gzip外不依赖任何外部程序
- 无需提供*.changes文件即可创建Release和Contents文件
- 缺点:
在大型仓库上可能很慢,除非先对输入文件(?FileList)进行排序(sort命令有效)
- ?
软件包:apt
- 自动仓库:不支持(使用dupload时支持)
- 接收机制:不支持(使用dupload的自定义移动cron脚本时支持)
- 软件池:支持
- OpenPGP签名:不支持(使用带脚本的dupload时支持)
- 无.changes文件的.deb包导入:支持
- 每个包的多个版本:支持
- 操作指南:
- Debian参考手册(2008年左右在lenny中发布,当前版本已删除此内容)-- SecureAPT结合dupload(针对拥有web服务器shell访问权限的用户)
apt-ftparchive生成Roberto Sanchez操作指南 -- 他现在推荐使用reprepro
使用apt-ftparchive创建简单本地归档的快速说明
我们使用/var/lib/mydebs作为示例位置
创建目录
mkdir -p /var/lib/mydebs
每次在目录中放入新文件时,都需要扫描目录并更新:
cd /var/lib/mydebs apt-ftparchive packages . > Packages apt-ftparchive release . > Release
在/etc/apt/sources.list中添加此行
deb [allow-insecure=yes] file:/var/lib/mydebs ./
现在您可以正常安装软件包。如果apt-get询问"Install these packages without verification?",回答"Y"以安装。这是因为此本地仓库未签名。
apt-get update apt-get install mydeb
dpkg-scanpackages和dpkg-scansources
- 目标:生成Packages索引文件
- 优点:
- 仅使用dpkg提供的基础工具
- 通过额外脚本可以创建Release和Contents文件,无需提供*.changes
- 缺点:
- 本身无法创建Release或Contents文件
软件包:dpkg
- 自动仓库:不支持
- 接收机制:不支持
- 软件池:不支持
- OpenPGP签名:不支持
- 无.changes文件的.deb包导入:支持
- 每个包的多个版本:支持
mkdebidx是一个shell(mksh)脚本,封装了dpkg-scanpackages和dpkg-scansources,生成Release和Release.gpg文件,并为完整的、可固定的、具有多个发行版和套件的仓库生成漂亮的XHTML/1.1索引(目前仅包-中心视图,但计划添加发行版/套件-中心视图)(仅适用于一两百个包;在雇主的仓库中有904个包,其中900个在一个发行版+套件中,需要一段时间才能完成但仍然可用)。可能计划基于此编写一个FusionForge插件用于仓库处理。
aptly
- 目标:管理本地仓库,制作快照并发布
- 优点:
- 支持在一个仓库中保存包的多个版本
- 在同一工具中支持镜像功能
下载与文档:http://www.aptly.info/
源码:GitHub
- 自动仓库:支持(?)
接收机制:支持(inoticoming -> aptly repo include)
- 软件池:支持
- OpenPGP签名:支持
- 无.changes文件的.deb包导入:支持
- 每个包的多个版本:支持
- 操作指南:
aptly教程:https://www.aptly.info/tutorial/
带接收机制的设置示例:http://oar.imag.fr/wiki:aptly
debify
- 目标:接收一个包含Debian包的目录,创建带签名且结构正确的Debian仓库(aptly的封装)
源码:GitHub
local-apt-repository
- 目标:从放入特定目录的包创建本地仓库
- 优点:
- 使用简单
- 缺点:
- 仓库仅对本地主机可用,其他机器无法访问
- 自动仓库:支持
- 接收机制:不需要。通过将包放入固定目录来添加包
- 软件池:不支持
- OpenPGP签名:不支持
- 无.changes文件的.deb包导入:支持
- 每个包的多个版本:?
dr
laniakea
源码:GitHub
Pulp
通过插件支持各种打包格式,包括Debian格式。
Debian仓库镜像工具
ftpsync
这是公共镜像站点的推荐镜像工具
- 目标:官方归档镜像工具
说明:设置Debian归档镜像
git仓库:git clone https://ftp-master.debian.org/git/archvsync.git
- 强烈推荐使用rsync协议进行镜像
reprepro用于部分镜像
- 描述:Debian软件包仓库生成器
软件包:reprepro
- 操作指南:
debmirror
- 描述:Debian部分镜像脚本,支持ftp和软件包池
apt-mirror
- 描述:APT源镜像工具
软件包:apt-mirror
debpartial-mirror
- 描述:创建部分Debian镜像的工具
apt-move
- 描述:在软件包池中维护Debian软件包
软件包:apt-move
aptly
- 描述:镜像远程仓库并管理本地仓库,制作快照,合并快照,在快照间拉取软件包,将快照发布为仓库
下载与文档:http://www.aptly.info/
源码:GitHub
演示文稿:PDF
=== anonftpsync(已弃用)===
- 描述:先前的官方镜像工具
- 优点:
- 易用且依赖少
- Bash脚本
- 缺点:
- 缺乏灵活性
- 不支持最新(2012年)的镜像特性(已弃用)
下载:anonftpsync
- 软件包:不在Debian中
- 依赖:bash,rsync
相关软件
netselect从您提供的列表中选择最快的镜像,而netselect-apt从所有现有镜像中选择最快的。
apt-spy使用不同方法做类似的事情。
parse-apt-files.inc Jarno Elonen编写的PHP脚本可以为仓库中的可用包生成漂亮的XHTML摘要 - 增强版本专门用于(但不限于)debarchiver。似乎有一些努力基于这些脚本开发wordpress插件。
另请参阅
如何使用Reprepro创建安全的软件包仓库(2014)
CategoryPackageManagement | CategoryDeveloper | CategoryPackaging