Archive:构建源

跳转至: 导航, 搜索
本页面介绍如何构建可以用于安装软件等的源。

有两种方法建立 YaST 安装源:无格式源(plain cache source)和“真” YaST 源。

无格式源

一个无格式源就是一个包含 RPM 包的目录。只有你创建一个文件 (IS_PLAINcache) 在目录下,YaST 才会把它作为一个无格式源。这个文件应该包含目录中所有已有 RPM 包的头信息(名称、版本、依赖性等),以免一遍又一遍的读文件。对于大的软件包,就算你不想装那个包,仍然要多次重复读取文件,导致时间冗长。所以这个设计的目的是让需要的包信息都被抽取出来存放到一个文件里面,节省时间和资源。

这个文件可以用程序 genIS_PLAINcache 创建,包含在 yast2-packagemanager 包里面。

优点

  • 易于建立

缺点

  • 不支持 Source RPMs (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 安装源。YaST -> 安装源。请记住以上限制。

YaST 源

一个“真” YaST 源包括许多文件和目录,用来描述安装源及其内容:不同系统架构用的二进制 RPM 包和分别的 source RPM 文件。有些描述性的文件可以用 create_package_descr 脚本创建,这个程序在 autoyast2-utils 包内。

优点

  • 支持 Source RPM
  • 支持多架构
  • YaST 里面可以看到安装源信息

缺点

  • 不易建立

安装源的描述分散于多个文件:

   media.1/
          `- media
   content
   directory.yast
   setup/descr/
              `- packages
              `- packages.DU
              `- packages.en
       
  • media.1/media

文件 media.1/media 包含下列部分介质信息:

   内容: 	<作者>
   <创建日期 (YYYYMMDDHHMMSS)>
   <媒体数目>

例子:

   Packman
   20040027150052
   1

提示: 日期字符串可以用 date 程序创建:

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

content文件包含对下列部分的媒介信息描述:

   关键字			内容
   PRODUCT		名称
   VERSION		版本
   VENDOR		制作者
   LABEL			源在 YaST 里面的名称
   ARCH.<基础架构>	支持基础架构的其他架构
   DEFAULTBASE	默认使用的系统架构,当基础架构不能被识别,YaST使用这个架构
   DESCRDIR		包描述文件所在目录名
   DATADIR		包所在的目录名

例子:

   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
  • directory.yast

如果安装源由于所用协议不支持目录列表(比如HTTP),YaST 使用这个文件。此文件可以用 ls 命令建立:

   ls -A1 > directory.yast

例子:

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

这些文件可以用 create_package_descr 脚本创建。他们包含安装源中所有包的大小、描述和依赖性信息。

实例

你的 FTP 服务器有个目录包含 SUSE LINUX 的二进制包和 source RPM 包,大部分二进制 RPM 都有两个架构的版本 (i586/i686)。而且有些脚本被打包进独立于架构 (architecture-independent) 的 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/

更多文档

关于 YaST 安装源的更多文档在 yast2-packagemanager-devel 包中。