构造Linux的图形化安装程序

上传人:宝路 文档编号:21420848 上传时间:2017-11-23 格式:DOC 页数:15 大小:101.32KB
返回 下载 相关 举报
构造Linux的图形化安装程序_第1页
第1页 / 共15页
构造Linux的图形化安装程序_第2页
第2页 / 共15页
构造Linux的图形化安装程序_第3页
第3页 / 共15页
构造Linux的图形化安装程序_第4页
第4页 / 共15页
构造Linux的图形化安装程序_第5页
第5页 / 共15页
点击查看更多>>
资源描述

《构造Linux的图形化安装程序》由会员分享,可在线阅读,更多相关《构造Linux的图形化安装程序(15页珍藏版)》请在金锄头文库上搜索。

1、构造 Linux 的图形化安装程序(4)本文是构造 Linux 的图形化安装程序系列文章的第四部分,内容主要包括 RPM 基本命令介绍,RPM 包的定制过程,RPM SPEC 文件的主要内容,RPM 函数库简单参考和安装程序中关于 RPM 包管理部分源码的简单介绍。通过这部分的介绍,希望读者能对 Linux 系统下 RPM 包的定制过程和 RPM 包的系统安装过程有一个基本的了解。在安装程序进行了磁盘分区工作之后,安装程序就可以进行 RPM 系统包的安装了。这是整个安装过程中很重要的一步。在这一环节,安装程序要读出所有 rpm 包的描述信息并根据包之间的依赖关系,构造出正确的包安装顺序。这种构

2、造的机制主要是对包依赖关系的树形结构进行深度搜索,对于最基本的系统包(比如 Glibc 和 Bash)一定要最先安装。为了保证在安装了所有的系统包之后,RPM 数据库运行良好,还要在安装过程中构造正确的 RPM 数据库。最后为了调试的方便,也便于用户检查安装的系统包,还需要对包的安装过程建立日志。RPM 包的基本概念RPM(Redhat Package Management)是由 RedHat 开发的, Linux 系统下的系统包管理工具。它的目标是:使包的安装和卸载过程更容易,能够证实一个包是否已经正确安装了,简化包的建立过程,可以从源代码建立整个包,使它能用于不同的体系结构。RPM 系统已

3、经成为现在 Linux 系统下包管理工具事实上的标准,并且它也移植到很多商业的 unix 系统之下。RPM 包由包标签标识,它包含这样几个部分,软件名,软件版本,包的发行版本。在包的内部还包含如下信息:包的建立时间,包的内容描述,安装包的所有文件的大小,数字签名以证实包的完整性。RMP 包还包含包内的文件信息,其中包括:每个文件的文件名,每个文件的权限,文件的属组和拥有者,每个文件的 md5 校验和,文件的内容。RPM 的包管理系统提供了下列功能:安装新的包,除去旧的包,将一个旧包升级为新的包,获得已经安装包的信息。常用的 RPM 命令:rpm -i 使用此命令可以安装一个 rpm 包。在安装

4、的过程中,此命令依次要进行包依赖性检测,包冲突检测,完成安装前必须执行的任务,处理相应的配置文件,解开包中的文件并将其拷贝到正确的位置,完成安装后必须执行的任务,对包进行的处理进行跟踪记录。例如:rpm -i bzip2-1.0.1-3.i586.rpm /安装 bzip2 包。 rpm -ivh bzip2-1.0.1-3.i586.rpm /安装 bzip2 包的同时,显示更多的文本提示信息,以及在屏幕上显示连续的#号来表示的安装进度。 有时在安装一个新包时,根据依赖性检查的结果,需要首先安装其他的包。但可能这时系统中并没有安装所需要包的合适版本,这样 rpm 会终止包的安装。为了直接安装

5、这个包,您需要加入-nodeps 选项。下例表示在安装 bzip2 包时,不进行依赖性检测。 rpm -ivh bzip2-1.0.1-3.i586.rpm -nodeps rpm -ivh bzip2-1.0.1-3.i586.rpm -force /强制安装 rpm 包。这条命令实际上等价于 rpm -ivh bzip2-1.0.1-3.i586.rpm -replacepkgs -replacefiles rpm -e 使用此命令可以删除一个 rpm 包。删除 rpm 包时,此命令要完成如下工作:检查 rpm 数据库确保没有其他包依赖将要删除的包。 如果包存在卸载前脚本,执行此脚本。 检

6、测安装包时是否对包配置文件进行了修改。如果进行了修改,则保存备份。 查找 rpm 数据库中此 RPM 包所包含的文件。如果这些文件不属于任何其它的包,则删除它。 如果包存在卸载后脚本,执行此脚本。 从 rpm 数据库除去所有包跟踪记录。例如: rpm -e bzip2 /从系统中除去 bzip2 包。添加-nodeps 选项可以在删除包时,禁止包的依赖性检查。 rpm -U 这条命令完成 rpm 包的升级。它执行的操作包括安装合意的包,删除所有存在的老版本的包。例如: rpm -U bzip2 /升级包 bzip2。 rpm -q 这条命令可以获得 rpm 包的信息。通过这条命令可以查询包的文

7、件列表,包的版本,包的描述性信息。同样的,你也可以通过这条命令查得一个文件属于哪个 rpm 包。例如:rpm -qf which fdisk /检查 fdisk 文件属于哪个系统包。 rpm -qi bzip2 /获得已安装包 bzip2 的描述性信息。 rpm -ql bzip2 /获得安装包 bzip2 的文件列表。 rpm -qa /获得系统安装的所有 rpm 包的列表。这条命令和 grep 命令一起使用,可以快速找到系统中包含的某个 rpm 包,例如: rpm -qa | grep bzip2 RPM 包建立过程为了完成 RPM 包的建立过程,需要执行以下步骤:执行 Spec 文件 p

8、rep 节的命令和宏。 检查文件列表的内容。 执行 Spec 文件 build 节的命令和宏。 执行 Spec 文件 install 节的命令和宏,同时也执行文件列表中的宏。 创建二进制包文件。 创建源码包。为了执行打包的工作,RPM 需要一系列目录完成建立的工作。正常的目录结构通常由一个顶级目录和五个子目录构成。这五个子目录分别是:SOURCES-包含原始的源文件、补丁和像标文件。 SPECS-包含控制建立过程的 spec 文件。 BUILD-包含源码解包和软件建立的目录。 RPMS-包含建立过程创建的二进制包文件。 SRPMS-包含建立过程创建的源码包文件。 除了上述这五个主要的目录外,在

9、 RPMS 或 SRPMS 目录下通常还会有关于包目标平台的目录。例如,i386、i586、i686 等代表与 Intel 兼容 cpu 的平台,noarch 目录下的包代表可以在任何平台下执行。2.1 SPEC 文件Spec 文件是整个 RPM 包建立过程的中心,它的作用就如同编译程序时的 Makefile 文件。Spec 文件包含建立一个 rpm 包必需的信息,包括哪些文件是包的一部分以及它们安装在哪个目录下。这个文件一般分为如下的几节:Preamle(序言) 序言包含用户请求包的信息时所显示的内容。它可以包含包的功能描述,包的软件版本,版权信息,所属的包组等。Prep 节 Prep 节进

10、行实际的打包准备工作,它是使用节前缀%prep 表示的。一般而言,这一节的主要工作是检查标签语法是否正确,删除旧的软件源程序,对包含源程序的 tar文件进行解码。如果包含补丁(patch)文件,将补丁文件应用到解开的源码中。它一般包含%setup 与%patch 两个命令。 % setup 用于将软件包打开,执行%patch 可将补丁文件加入解开的源程序中。 %setup -n newdir-将压缩的软件源程序在 newdir 目录下解开。 -c -在解开源程序之前先创建目录。 -b num-在包含多个源程序时,将第 num 个源程序解压缩。 -T-不使用缺省的解压缩操作。 例如: %setu

11、p -T -b 0 /解开第一个源程序文件。 %setup -c -n newdir /创建目录 newdir,并在此目录之下解开源程序。 %patch %patchN-这里 N 是数字,表示使用第 N 个补丁文件,等价于%patch -P N -p0-指定使用第一个补丁文件,-p1 指定使用第二个补丁文件。 -s-在使用补丁时,不显示任何信息。 -b name-在加入补丁文件之前,将源文件名上加入 name。若为指定此参数,则缺省源文件加入.orig。 -T-将所有打补丁时产生的输出文件删除。 Build 节 这一节主要用于编译源码,它是使用节前缀%build 表示的。这一节一般由多个 ma

12、ke命令组成。Install 节 这一节主要用于完成实际安装软件必须执行的命令,它是使用节前缀%install 表示的。这一节一般是由 make install 指令构成,但是有时也会包含 cp、mv、install 等指令。这一节还能指定在用户安装的系统上,包安装时运行的脚本。这样的脚本称为安装(卸载)脚本。它可以指定包安装前、包安装后、包除去前、包除去后的系统必须运行的外壳程序段。在用户安装的系统上,为了验证一个包是否已经成功安装的验证脚本也可由这一节指定。Clean 节 这一节所描述的内容表示在完成包建立的工作之后,自动执行此节下的脚本进行附加的清除工作,它是使用节前缀%clean 表示

13、的。一般而言,这一节的内容是简单地使用 rm -rf $RPM_BUILD_ROOT 命令,不需要指定此节的其它内容。文件列表 这一节指定构成包的文件的列表,它是使用节前缀%files 表示的。此外,它还包含一系列宏控制安装后的文件属性和配置信息。改动日志 这一节主要描述软件的开发记录,它是使用节前缀%changlog 表示的。这个段的内容是为了开发人员能详细的了解该软件的开发过程,对于包的维护极有好处。2.2 建立 rpm 包有时您可能只有一个 tar.gz 格式的源程序包,为了生成正确的 rpm 包,您可以使用autospec 自动创建 spec 文件。举例来说,您有一个源程序文件 som

14、e.tar.gz。为了定制 rpm 包,您要进行如下操作:解压缩源程序包 tar xvzf some.tar.gz 手动编译和安装此源程序包 make; make install 自动生成 spec 文件 make -n install | autospec -i some.spec 编译生成 rpm 包 rpm -ba some.spec 在创建 spec 文件之前,必须成功编译源程序包。否则 autospec 生成的 spec 文件将不会包含%build 、%install、%file 。对于一般的源程序包,您只需到 SPEC 目录下,直接执行上面操作的第四步就可以了。定制系统安装盘定制系

15、统安装盘的过程主要是指对于用户提供的一组 RPM 包,安装程序能够根据用户提供的描述文件,自动进行包的安装。这个过程包括对包的依赖性进行检查、根据类别选择需要安装的包。使用 HappyLinux 发布盘上附带的 RPM 包管理工具可以定制系统发布盘,这些包管理工具保存在安装盘的/misc 目录下。为了保证安装程序能够工作,必须在/HappyLinux/base目录下提供以下的文件:compss 在 HappyLinux 系统下,它是由系统命令 gendistrib 自动生成的。它可以根据包所属的包组对包进行分类。compss 描述发布盘上所有包的一个列表。这个文件对于安装过程没有影响,它的存在

16、只是为了与以前的版本兼容。 compssUsers 此文件的内容是对 rpmsrate 文件所描述的包类别进行进一步的包装,以形成更高层的包类表述。 depslist depslist.ordered 这两个文件是命令 gendistrib 生成的,它描述每个包所依赖的系统包。depslist.ordered 使安装程序实际使用的文件,它将依赖包的文本描述转换为包的编号,这样可以加快整个安装的进程。 happyinst_stage2.bz2 这个文件保存的是整个安装环境(也就是安装盘上/HappyLinux/happyinst 目录下的所有文件)的压缩镜像,它会在启动过程中由系统加载程序调入内存。这个文件是

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 其它办公文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号