openSUSE:YaST2 软件源元数据标准
YaST 软件源元数据格式
由于 XML 解析器的灵活性不足,YaST 格式仍支持 CD/DVD 安装。XML 解析器倾向于完整读取文件,这在初始安装时内存不足的情况下不实用。
此外,YaST 格式支持跨多个媒体(例如 CD)的软件源,这是 repomd 最初无法实现的功能。repomd 格式的最新更新表明此限制现已解除。
特性
- 每个媒体包含多个产品
一个媒体可能包含多个产品,即一个组合补丁媒体。 - 每个产品包含多个架构
一个媒体可能包含适用于多个架构的产品。 - 双架构支持
一个架构可以是双架构,允许混合兼容架构。 - 每个产品包含多种语言
一个媒体可能包含适用于多种语言的产品。 - 媒体集
a) 内容可能被分割到多个媒体上——它们构成一个媒体集。
b) 必须能够将媒体集合并到单个目录中。
c) 媒体可能是双面的(例如 DVD-ROM)。 - 系统必须易于识别媒体
这在重新插入 CD-ROM 媒体以进行后续软件包安装时是必需的。系统必须验证是否插入了正确的媒体,并且可以用于软件包安装。 - 产品名称
- 产品版本
- 基础发行版
指定产品所基于的发行版。 - 基础发行版版本
- 产品供应商
- 用户可读的内容描述
这需要在安装软件包之前向用户呈现媒体信息。用户必须能够根据此信息决定是继续还是取消安装过程。 - 软件包路径
软件包的顶层路径(即 SuSE 媒体上的“suse/”,UL 媒体上的“unitedlinux/”等) - 默认语言
如果无法确定语言,则使用默认语言。 - 在线更新的初始服务器
- 不支持文件通配符搜索
在本地媒体上进行通配符搜索很便宜,但通过 HTTP 几乎不可能。因此应尽可能避免。
规范
软件源布局
YaST 元数据以两个文件为根
content 文件
描述了产品(名称、版本、依赖关系)和软件源布局。它还包含用于在产品安装期间控制 YaST 的数据。
media.1/media
media 文件描述了用于查找和识别属于同一集合的所有媒体的媒体格式。
包描述目录
该内容文件包含指向软件源中另外两个目录的链接
DESCRDIR
- 模式
- 软件包
- packages 文件
- packages.DU 文件
- packages.<lang> 文件
它们都通过 content 文件连接。它定义了一个 DESCRDIR,其中包含模式、选择和软件包文件。
为了访问模式和选择,其文件名必须分别列在 <DESCRDIR>/patterns 和 <DESCRDIR>/selections 中
这是必需的,因为通配符匹配(即 <DESCRDIR>/*.pat 不支持所有传输方式;通过 http 进行 ls 没有标准方式)
DATADIR
DATADIR(在大多数安装媒体上通常是 suse/)包含安装数据——rpm 软件包。
软件包按架构子目录组织。
子目录设置是一个例外,因为它不包含软件包,而是包含进一步的元数据。参见 DESCRDIR。
每个此类目录都包含一个列出模式的文件和一个列出软件包的文件。
示例
linux# grep Enterprise /mnt/media.1/products sles SuSE Linux Enterprise Server linux# grep DESCRDIR /mnt/sles/content DESCRDIR suse/setup/descr linux# ls -R /mnt/sles/suse/setup/descr ... packages selections ... linux#
该packages文件
这基本上是一个用于软件包选择和依赖关系解析所需的软件包数据缓存文件。有关语法,请参阅当前的此处。
该packages文件必须存在才能启用媒体。
The package file contains pure package / rpm data and no user readable string (i.e. translations).
该packages.LANG文件
对于在以下位置定义的每种语言content:LINGUASapackages.LANG文件存在于content:DESCRDIR目录中。此文件包含供用户查看的翻译字符串(即软件包摘要、描述等)。
该packages.DU文件
此文件包含每个软件包和软件包使用的目录的磁盘使用信息。它用于估算文件系统要求,尤其是在使用多个分区(例如用于/usr, /var, /opt等)时。YaST 无法计算精确的使用信息,因为它严重依赖于硬链接或符号链接(在软件包中或在文件系统中)以及所使用的文件系统(即 ext2 与 reiserfs)。有关此文件的格式定义,请参见 [du-descr.html here]。(注意:.DU 后缀不与 .LANG 后缀冲突,因为语言后缀以小写字母开头。)
示例
linux# grep Enterprise /mnt/media.1/products sles SuSE Linux Enterprise Server linux# grep DATADIR /mnt/sles/content DATADIR suse linux# grep ^ARCH /mnt/sles/content ARCH.x86_64 x86-64 i686 i586 i486 noarch ARCH.i586 i586 i486 noarch linux# ls -R /mnt/sles/suse ... x86-64/ i686/ i586/ i486/ noarch/ ... linux#
模式
模式语法.
元数据签名和校验和
阅读元数据签名模型。
基于此模型,主索引是 content 文件,签名必须以 content.asc 提供。
用于签署主索引的密钥的公共部分可以以 content.key 提供