apt-ftparchive - 生成索引文件的实用程序
apt-ftparchive [-dsq] [--md5] [--delink] [--readonly] [--contents] [--arch architecture] [-o=config_string] [-c=config_file] {packages path [override-file [pathprefix]] | sources path [override-file [pathprefix]] | contents path | release path | generate config_file section... | clean config_file | {-v | --version} | {-h | --help}}
apt-ftparchive 是一个命令行工具,它生成 APT 用于访问分发源的索引文件。应根据该站点的内容在源站点上生成索引文件。
apt-ftparchive 是 dpkg-scanpackages(1) 程序的超集,通过 packages 命令合并其全部功能。它还包含内容文件生成器、内容以及为完整存档的生成过程编写脚本的复杂方法。
在内部apt-ftparchive可以利用二进制数据库来缓存.deb文件的内容,并且它不依赖于除gzip之外的任何外部程序(1)。进行完整生成时,它会自动执行文件更改检查并构建所需的压缩输出文件。
除非给出 -h 或 --help 选项,否则必须存在以下命令之一。
packages 命令从目录树生成包文件。它获取给定的目录并递归地搜索 .deb 文件,为每个文件向 stdout 发出一个包记录。此命令大致相当于dpkg-scanpackages(1)。
选项--db可用于指定二进制缓存数据库。
sources 命令从目录树生成源索引文件。它获取给定的目录并递归地搜索 .dsc 文件,将每个文件的源记录发送到 stdout。此命令大致相当于dpkg-scansources(1)。
如果指定了覆盖文件,则将查找扩展名为 .src 的源覆盖文件。 --source-override 选项可用于更改将使用的源覆盖文件。
content 命令从目录树生成内容文件。它获取给定目录并递归搜索 .deb 文件,并从每个文件中读取文件列表。然后,它对与包匹配的文件列表进行排序并将其写入标准输出。目录不会写入输出。如果多个包拥有同一文件,则每个包在输出中用逗号分隔。
选项--db可用于指定二进制缓存数据库。
release 命令从目录树生成 Release 文件。默认情况下,它会递归搜索给定目录中未压缩和压缩的包、源、内容、组件和图标文件以及发布、索引和 md5sum.txt 文件 (APT::FTPArchive::Release::Default-Patterns)。可以通过在 APT::FTPArchive::Release::Patterns 中列出其他文件名模式来添加它们。然后,它将向 stdout 写入一个 Release 文件,其中包含(默认情况下)每个文件的 MD5、SHA1、SHA256 和 SHA512 摘要。
Release 文件中附加元数据字段的值取自 APT::FTPArchive::Release 下的相应变量,例如APT::FTPArchive::发布::起源。支持的字段包括 Origin、Label、Suite、Version、Codename、Date、NotAutomatic、ButAutomaticUpgrades、Acquire-By-Hash、Valid-Until、Signed-By、Architectures、Components 和 Description。
生成命令设计为可从 cron 脚本运行,并根据给定的配置文件构建索引。配置语言提供了一种灵活的方法来指定从哪些目录构建哪些索引文件,并提供了一种维护所需设置的简单方法。
clean 命令通过删除不再需要的任何记录来整理给定配置文件使用的数据库。
生成命令使用配置文件来描述将要生成的档案。它遵循典型的 ISC 配置格式,如 bind 8 和 dhcpd 等 ISC 工具中所示。 apt.conf(5) 包含语法描述。注意generate配置是以分段的方式解析的,而apt.conf(5)是以树的方式解析的。这仅影响范围标记的处理方式。
生成配置有四个独立的部分,每个部分如下所述。
Dir 部分定义了在生成过程中查找所需文件所需的标准目录。这些目录前面添加了后面部分中定义的某些相对路径,以生成完整的绝对路径。
指定 FTP 存档的根目录,在标准 Debian 配置中,这是包含 ls-LR 和 dist 节点的目录。
指定覆盖文件的位置。
指定缓存文件的位置。
如果下面使用 FileList 设置,则指定文件列表文件的位置。
默认部分指定默认值以及控制生成器操作的设置。其他部分可能会使用每个部分的设置来覆盖这些默认值。
设置用于包索引文件的默认压缩方案。它是一个字符串,其中包含至少一个通过 APT::Compressor 配置范围配置的压缩器的空格分隔列表。所有压缩方案的默认值为 . gzip。
设置作为包文件的文件扩展名的默认列表。默认为 .deb。
这与 Packages::Compress 类似,只是它控制源文件的压缩。
设置作为源文件的文件扩展名的默认列表。默认为 .dsc。
这与 Packages::Compress 类似,只是它控制内容文件的压缩。
这与 Packages::Compress 类似,只是它控制 Translation-en 主文件的压缩。
指定每次运行要取消链接(并替换为硬链接)的千字节数。这与每个部分的外部链接设置结合使用。
指定所有创建的索引文件的模式。默认为 0644。所有索引文件都设置为此模式,与 umask 无关。
指定长描述是否应包含在 Packages 文件中或拆分到主 Translation-en 文件中。
设置特定于树部分的默认值。所有这些变量都是替换变量,并且将字符串 $ (DIST)、$ (SECTION) 和 $ (ARCH) 替换为其各自的值。
设置每天生成的内容文件的千字节数。内容文件是循环的,因此在几天内它们都会被重建。
控制内容文件允许在不更改的情况下进行检查的天数。如果超过此限制,内容文件的运行时间将被更新。如果以不会生成新内容文件的方式更改包文件[例如覆盖编辑],则可能会发生这种情况。允许推迟,希望能够安装新的 .debs,无论如何都需要一个新文件。默认为10,单位为天。
设置 .deb 目录树的顶部。默认为 $ (DIST)/$ (SECTION)/binary-$ (ARCH)/
设置源包目录树的顶部。默认为 $ (DIST)/$ (SECTION)/source/
设置输出包文件。默认为 $ (DIST)/$ (SECTION)/binary-$ (ARCH)/Packages
设置输出源文件。默认为 $ (DIST)/$ (SECTION)/source/Sources
如果输出 Translation-en 主文件不应包含在 Packages 文件中,则设置带有长描述的输出 Translation-en 主文件。默认为 $ (DIST)/$ (SECTION)/i18n/Translation-en
设置路径前缀,使符号链接被视为内部链接而不是外部链接。默认为 $ (DIST)/$ (SECTION)/
设置输出内容文件。默认为 $ (DIST)/$ (SECTION)/Contents-$ (ARCH)。如果此设置导致多个包文件映射到单个内容文件(默认情况下),则 apt-ftparchive 将自动将这些包文件集成在一起。
设置头文件以添加到内容输出之前。
设置用于此部分的二进制缓存数据库。多个部分可以共享同一个数据库。
指定 apt-ftparchive 应从给定文件中读取文件列表,而不是遍历目录树。相对文件名以存档目录为前缀。
指定 apt-ftparchive 应从给定文件中读取文件列表,而不是遍历目录树。相对文件名以存档目录为前缀。这在处理源索引时使用。
Tree 部分定义了一个标准 Debian 文件树,它由一个基本目录、该基本目录中的多个部分以及最后每个部分中的多个架构组成。使用的确切路径由目录替换变量定义。
Tree 部分采用范围标记,该标记设置 $ (DIST) 变量并定义树的根(路径以 ArchiveDir 为前缀)。通常这是一个设置,例如 dists/bookworm。
TreeDefault 部分中定义的所有设置以及三个新变量都可以在 Tree 部分中使用。
处理树部分时apt-ftparchive执行类似于以下的操作:
for i in Sections do for j in Architectures do Generate for DIST=scope SECTION=i ARCH=j
这是出现在发行版下的以空格分隔的部分列表;通常这类似于主要贡献非自由非自由固件
这是搜索部分下出现的所有架构的空格分隔列表。特殊的架构源用于指示该树具有源存档。体系结构所有信号表明体系结构特定文件(如包)不应包含有关所有文件中的体系结构所有包的信息,因为它们将在专用文件中可用。
指定长描述是否应包含在 Packages 文件中或拆分到主 Translation-en 文件中。
设置二进制覆盖文件。覆盖文件包含部分、优先级和维护者地址信息。
设置源覆盖文件。覆盖文件包含节信息。
设置二进制额外覆盖文件。
设置源额外覆盖文件。
bindirectory 部分定义了一个没有特殊结构的二进制目录树。范围标签指定二进制目录的位置,并且设置类似于树部分,没有替换变量或SectionArchitecture设置。
设置包文件输出。
设置源文件输出。至少需要包或源之一。
设置内容文件输出(可选)。
设置二进制覆盖文件。
设置源覆盖文件。
设置二进制额外覆盖文件。
设置源额外覆盖文件。
设置缓存数据库。
将路径附加到所有输出路径。
指定文件列表文件。
二进制覆盖文件与dpkg-scanpackages(1)完全兼容。它包含四个由空格分隔的字段。第一个字段是包名称,第二个字段是强制该包的优先级,第三个字段是强制该包的部分,最后一个字段是维护者排列字段。
维护者字段的一般形式为:
old [// oldn]* => new
或者简单地说,
new
第一种形式允许指定双斜杠分隔的旧电子邮件地址列表。如果找到其中任何一个,则用 new 替换维护者字段。第二种形式无条件替代维护者字段。
源覆盖文件与dpkg-scansources(1) 完全兼容。它包含两个由空格分隔的字段。第一个字段是源包名称,第二个字段是分配它的部分。
额外的覆盖文件允许在输出中添加或替换任何任意标签。它有三列,第一列是包,第二列是标签,该行的其余部分是新值。
所有命令行选项都可以使用配置文件进行设置,描述指示要设置的配置选项。对于布尔选项,您可以使用 -f-、--no-f、-f=no 或多个选项来覆盖配置文件其他变化。
生成给定的校验和。这些选项默认为打开,关闭时生成的索引文件将尽可能不具有校验和字段。配置项:APT::FTPArchive::Checksum 和 APT::FTPArchive::Index::Checksum 其中 Index > 可以是 Packages、Sources 或 Release,Checksum 可以是 MD5、SHA1、SHA256 或 SHA512。
使用二进制缓存数据库。这对生成命令没有影响。配置项:APT::FTPArchive::DB。
安静的;生成适合记录的输出,省略进度指示器。更多 qs 将产生更多安静,最多可达 2。您还可以使用 -q=# 设置安静级别,覆盖配置文件。配置项:安静。
执行脱钩。如果使用外部链接设置,则此选项实际上可以取消文件的链接。它默认处于打开状态,可以使用--no-delink将其关闭。配置项:APT::FTPArchive::DeLinkAct。
执行内容生成。当设置此选项并且使用缓存数据库生成包索引时,文件列表也将被提取并存储在数据库中以供以后使用。使用生成命令时,此选项还允许创建任何内容文件。默认开启。配置项:APT::FTPArchive::Contents。
选择要与sources 命令一起使用的源覆盖文件。配置项:APT::FTPArchive::SourceOverride。
将缓存数据库设置为只读。配置项:APT::FTPArchive::ReadOnlyDB。
在包和内容命令中仅接受与 *_arch.deb 或 *_all.deb 匹配的包文件,而不是给定路径中的所有包文件。配置项:APT::FTPArchive::Architecture。
apt-ftparchive(1) 在cachedb 中缓存尽可能多的元数据。如果再次使用相同版本重新编译和/或重新发布包,这将导致问题,因为将使用现在过时的缓存元数据(例如大小和校验和)。启用此选项后,这种情况将不再发生,因为将检查文件是否已更改。请注意,此选项默认设置为“false”,因为不建议上传具有相同版本号的包的多个版本/构建,因此理论上没有人会遇到这些问题,因此所有这些额外的检查都是无用的。
此配置选项默认为“true”,并且仅当使用 apt-ftparchive(1) 生成的存档还提供翻译文件时才应设置为“false”。请注意,Translation-en 主文件只能在生成命令中创建。
显示简短的使用摘要。
显示程序版本。
配置文件;指定要使用的配置文件。程序将读取默认配置文件,然后读取此配置文件。如果需要在解析默认配置文件之前设置配置设置,请指定带有 APT_CONFIG 环境变量的文件。有关语法信息,请参阅 apt.conf(5)。
设置配置选项;这将设置任意配置选项。语法为-o Foo::Bar=bar。 -o 和 --option 可以多次使用来设置不同的选项。
要为包含二进制包 (.deb) 的目录创建压缩包文件:
apt-ftparchive packages directory | gzip > Packages.gz
apt.conf(5)
apt-ftparchive 在正常操作时返回零,在错误时返回十进制 100。
APT 错误页面[1]。如果您想报告 APT 中的错误,请参阅 /usr/share/doc/debian/bug-reporting.txt 或 reportbug(1) 命令。
杰森·冈索普
APT团队
1.APT错误页面:http://bugs.debian.org/src:apt