Falcot Corp gradually started maintaining a number of Debian packages, either locally modified from existing packages or created from scratch to distribute internal data and programs.
为了更容易部署,他们想要将这些软件包集成在能够由 APT 直接使用的软件包档案中。明显为了维护的原因,他们希望将内部软件包从本地重建的软件包中分出来。目标是使 /etc/apt/sources.list.d/falcot.list
文件中的匹配入口如后面这样:
deb http://packages.falcot.com/ updates/
deb http://packages.falcot.com/ internal/
这样管理员在他们的内部 HTTP 服务器上配置虚拟主机,以 /srv/vhosts/packages/
作为相关 web 空间的根。档案本身的管理委托给 mini-dinstall
命令(在相似命名的软件包中)。这个工具照看 incoming/
目录(在我们的情况下是 /srv/vhosts/packages/mini-dinstall/incoming/
),并在那里等待新的软件包;软件包当上传时,就安装在 /srv/vhosts/packages/
的 Debian 档案中。mini-dinstall
命令读取 Debian 软件包生成时创建的 *.changes
文件。这些文件包含与软件包的版本相关的所有其它文件的列表(*.deb
、*.dsc
、*.diff.gz
/*.debian.tar.gz
、*.orig.tar.gz
,或使用其它压缩工具生成的它们的相应文件),并且这些允许 mini-dinstall
知道安装哪些文件。*.changes
文件还包含目标发布版本(通常是 unstable
)的名称,这些目标发布版本在最新的 debian/changelog
入口被提到,并且 mini-dinstall
使用这个信息来确定软件包应该安装在哪里。这就是为什么管理员在构建软件包前必须总是更改这个字段,并依赖于目标位置,将它设置为 internal
或 updates
。然后 mini-dinstall
生成 APT 所需的文件,如 Packages.gz
。
配置 mini-dinstall
需要设置 ~/.mini-dinstall.conf
文件;在 Falcot Corp 公司的情况下,内容如下:
[DEFAULT]
archive_style = flat
archivedir = /srv/vhosts/packages
verify_sigs = 0
mail_to = admin@falcot.com
generate_release = 1
release_origin = Falcot Corp
release_codename = stable
[updates]
release_label = Recompiled Debian Packages
[internal]
release_label = Internal Packages
值得注意的一个决定是为每个档案生成
Release
文件。这可以使用
/etc/apt/preferences
配置文件来帮助管理软件包安装的优先性(细节请参见
第 6.2.5 节 “软件包优先级管理” )。
调用 mini-dinstall
实际上在后端启动了守护程序。只要这个守护程序运行,它就将每半个小时检查一次 incoming/
目录中的新软件包;新软件包当到达时,将被移动到档案中,并生成适当的 Packages.gz
和 Sources.gz
文件。如果运行守护程序是个问题,那么软件包每次上传到 incoming/
目录中时, mini-dinstall
也能够以批处理模式手动调用(通过 -b
选项)。由 mini-dinstall
提供的其它可能性归档在其 mini-dinstall(1) 手册页面中。