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 包中。