SDB:创建 YaST 安装源

跳转到:导航搜索


生成 YaST 安装源

YaST 的安装源有三种类型:纯缓存、yum 和“真正的”YaST 源。

纯缓存源

纯缓存源是一个包含 RPM 文件的目录。为了使 YaST 识别一个目录为纯缓存源,您必须创建一个文件(IS_PLAINcache),其中包含可用 RPM 包的 RPM 头部信息。YaST 需要软件包数据(名称、版本、依赖项等)来自 .rpm 文件,以便避免一遍又一遍地读取该文件。对于大型软件包,这将导致极长的传输时间,即使您不想安装该软件包也是如此。因此,所需的软件包数据是从软件包中提取并存储在一个文件中。

可以使用genIS_PLAINcache实用程序创建此文件,该实用程序包含在 yast2-packagemanager 包中。

优点

  • 易于生成

缺点

  • 不支持源 RPM (src.rpm)
  • 不支持多种架构 (i586, i686, noarch, ppc 等)
  • YaST 中没有安装源的描述
  • genIS_PLAINcache 是一个二进制文件(不是脚本),只能在 SUSE 系统上运行

示例

您在服务器上有一个包含许多二进制 RPM 文件的目录,并且希望通过 HTTP 或 FTP 将其作为 YaST 安装源提供。

   /srv/www/htdocs/suse/RPMS/
                             `- software1-1.0-1.i686.rpm
                             `- software2-1.0-1.i686.rpm
                             `- software3-1.0-1.i686.rpm
                             `- test/
                                     `- test1-0.99-1.i686.rpm
                                     `- test2-0.99-1.i686.rpm
                                     `- test3-0.99-1.i686.rpm

运行以下命令以生成纯缓存源

   cd /srv/www/htdocs/suse/RPMS/
   genIS_PLAINcache -f -r .
   gzip genIS_PLAINcache

随后,您可以将该目录作为 YaST -> 更改安装源中的安装源添加。请注意上述限制。

repomd/rpm md/YUM 源

repomd 源(也称为 rpm mdyum 源)是一个包含 RPM 文件或包含 RPM 文件的子目录的目录。为了使 YaST 识别一个目录为 repomd 源,您必须创建包含可用 RPM 包的 RPM 头部信息的 repodata 目录(与纯缓存源中的原因相同)。

可以使用 createrepo 实用程序创建此文件,该实用程序包含在 createrepo 包中。

优点

  • 易于生成
  • 支持多种架构

缺点

  • 不支持源 RPM (src.rpm)

示例

您在服务器上有一个包含许多 RPM 文件的目录,并且希望将其作为 YUM 安装源提供。

   /srv/www/htdocs/suse/RPMS/
                             `- i686/
                                    `- software1-1.0-1.i686.rpm
                                    `- software2-1.0-1.i686.rpm
                                    `- software3-1.0-1.i686.rpm
                             `- i586/
                                    `- software1-1.0-1.i586.rpm
                                    `- software2-1.0-1.i586.rpm
                                    `- software3-1.0-1.i586.rpm             
                             `- test/
                                     `- test1-0.99-1.i686.rpm
                                     `- test2-0.99-1.i686.rpm
                                     `- test3-0.99-1.i686.rpm

运行以下命令以生成 YUM 安装源

   # createrepo /srv/www/htdocs/suse/RPMS

随后,您可以将该目录作为 YaST -> 更改安装源中的安装源添加。

YaST 源

“真正的”YaST 源(也称为 susetags 源)由几个文件和目录组成,这些文件和目录描述了安装源及其内容:各种架构的二进制 RPM 文件和各自的源 RPM 文件。其中一些描述性文件可以使用 create_package_descr 脚本生成,该脚本包含在 autoyast2-utils 包中。

优点

  • 支持源 RPM
  • 支持多种架构
  • 小于 XML 文件
  • 支持跨多个介质(例如 CD)的存储库
  • YaST 中显示安装源的描述
  • 支持多语言描述
  • 支持精确的软件包大小(每个目录)
  • 可以使用虚拟提供 (extra provides)

缺点

  • 不容易生成

示例

安装源的描述分为几个文件

   media.1/
          `- media
   content
   content.asc # optional
   content.key # optional
   directory.yast
   setup/descr/
              `- packages
              `- packages.DU
              `- packages.en
       
  • media.1/media

文件 media.1/media 包含一个介质描述,该描述由以下组件组成

内容

   <Author>
   <Date of creation (YYYYMMDDhhmmss)>
   <Number of media>

示例

   Packman
   20040127150052
   1

提示:可以使用 date 实用程序生成日期字符串

   date +%Y%m%d%H%M%S

date 字段可以是任何内容,其唯一用途是识别属于同一组的多个介质。使用日期只是为了更容易地在产品开发的 beta/rc 阶段识别确切版本。


  • 内容

内容文件包含一个介质内容描述,该描述由以下组件组成

   Key 	Content
   PRODUCT 	Product name
   VERSION 	Product version
   VENDOR 	Product vendor
   LABEL 	Source designation to be used in YaST
   ARCH.<base> 	Supported architectures for the base architecture
   DEFAULTBASE 	Default base architecture in case the base architecture cannot be determined by YaST
   DESCRDIR 	The directory containing the package descriptions
   DATADIR 	The directory containing the packages

示例

   PRODUCT Packman
   VERSION 10.0-0
   LABEL Packman (SUSE LINUX 10.0)
   VENDOR Packman Packager Team
   ARCH.i686 i686 i586 i486 i386 noarch
   ARCH.i586 i586 i486 i386 noarch
   DEFAULTBASE i586
   DESCRDIR setup/descr
   DATADIR RPMS

从 SUSE Linux 10.1 开始,安装源通过加密签名内容文件并使用 SHA1 校验和来保护。使用分离签名(即放置在单独文件中的签名)。对于您自己的安装源,这是可选的,但强烈建议这样做。有关详细信息,请参阅关于 的页面。

   content.asc

包含签名,并且用于对文件进行签名的 GPG 密钥对的公钥可以放置在 content 和 content.asc 文件旁边的文件中,文件名为

   content.key

以便更容易地将密钥导入 RPM 密钥环。

在内容文件中允许两个额外的可选标签,META 和 KEY。如果它们存在,则必须像这样使用它们

  • 对于目录 DESCRDIR(例如 setup/descr)中的每个文件,都必须有一个 META 条目。
  • 对于用于对 RPM 包进行签名并应添加到 RPM 密钥环的每个 GPG 密钥,都必须有一个 KEY 条目。密钥本身必须放置在与内容文件相同的目录中。

示例

   META SHA1 b5e293f8df00bfe45d3ed4521af2d9befe48656f  Basis-Devel-10.1-42.noarch.sel
   META SHA1 4bbb4a037421bbb5b4d9df7ecaa0e48e7f0edf67  packages
   KEY SHA1 a108c6aab19fe604fa98ef299cdce6e6ba275f09  gpg-pubkey-0dfb3188-41ed929b.asc

这两个标签都有三个属性。第一个指示使用的校验和类型(目前仅允许 SHA1),第二个是校验和,第三个是元数据文件或密钥的文件名。

  • directory.yast

如果安装源是通过不支持目录列表的协议(例如 HTTP)寻址的,YaST 会使用该文件。可以使用 ls 实用程序轻松生成此文件

   ls -A1 > directory.yast

示例

   RPMS
   content
   directory.yast
   media.1
   setup
  • setup/descr/*

可以使用 create_package_descr 脚本生成这些文件。它们包含安装源中所有软件包的依赖项、大小和软件包描述。

示例

您的 FTP 服务器有一个包含 SUSE Linux 的二进制和源 RPM 包的目录。大多数二进制 RPM 包都适用于两种架构 (i586/i686)。此外,一些脚本打包在与架构无关的 RPM 包(noarch)中。您希望将此目录作为 SUSE Linux 10.0 的 YaST 安装源提供。

   /srv/ftp/pub/linux/suse/10.0/RPMS/
                                   `- i586/
                                   |      `- software1-1.0-1.i586.rpm
                                   |      `- software2-1.0-1.i586.rpm
                                   `- i686/
                                   |      `- software1-1.0-1.i686.rpm
                                   |      `- software2-1.0-1.i686.rpm
                                   `- noarch/
                                   |        `- script1-1.0-1.noarch.rpm
                                   |        `- script2-1.0-1.noarch.rpm
                                   `- src/
                                         `- software1-1.0-1.src.rpm
                                         `- software2-1.0-1.src.rpm
                                         `- script1-1.0-1.src.rpm
                                         `- script2-1.0-1.src.rpm

要从该目录生成“真正的”YaST 源,请执行以下命令

   cd /srv/ftp/pub/linux/suse/10.0/
   mkdir media.1
   $EDITOR media.1/media
   $EDITOR content
   ls -A1 > directory.yast
   create_package_descr -d RPMS/

create_package_descr 脚本位于 inst-source-utils 包中或可以从 sf.net 下载。解压缩该软件包,将其保存到您的路径中,并对其执行 chmod 755。

该脚本将扩展为可选地生成加密签名和校验和,因此将很容易创建您自己的安全存储库。

更多文档

有关 YaST 安装源的更多文档可在 yast2-packagemanager-devel 包中找到。

参见

YaST 模块称为 提供了一个用于创建 Add-On 产品(可用作安装源)的 GUI。