软件开发的最终目标就是要给用户用,而在把软件发布给用户前,我们一般会先制做一个安装包,这样用户在使用我们的软件前就能轻松的把软件安装到系统上,这篇文章我就介绍在Linux下制做RPM安装包和在Solaris下制做PKG安装包的方法。
RPM安装包的制做方法
RPM(RPM Package Manager)是一个开放的包管理器,它使用户可以从源码构建一个二进制的软件发行包和利用补丁包给软件打补丁。RPM包非常灵活易用,因此被作为很多linux发行版的默认软件安装包。
创建一个RPM安装包是件很容易的事,特别是当你可以获得软件的源代码包的时候。下面介绍怎么制做一个RPM软件安装包,在继续之前,我们假设你已经知道怎么从源代码安装一个软件包。
制做一个RPM软件安装包有以下几个步骤:
(1)获得软件的源代码包
(2)如果你自己修改了软件,那么给它做一个补丁
(3)编写一个包含软件包信息的spec文件
(4)确保软件被正确的安装到适当的位置
(5)创建RPM安装包
从上面的几步我们可以看到,制做一个RPM包最主要的就是第三步编写一个spec文件,下面介绍怎么编写这个spec文件。一个spec文件分成下面几个小节
一、前言(preamble)
当用户查询软件包信息的时候,RPM程序会打印出前言包含的信息。这一小节包含的信息有软件包的名称、功能描述、版本号、发行号和类型等信息。
二、准备(preparation)
从prep节开始是创建一个软件包要做的实际工作。故名思意,这一小节所做的都是一些必须的准备工作,它的内容就像一个普通的shell脚,为了使工作更容易,这一小节提供了两个可以使用的宏,一个是解压tar文件,并把当前工作目录设置为源代码目录,另一个是给源码打补丁。
三、创建(build)
就像prep小节一样,build的内容也是一个普通脚本,这一小节包含的是怎么编译源代码,它可以是一个简单的make命令或者一些更复杂的编译命令。因为现在的大多数软件都使用make编译,所以这一小节没有提供宏。
四、安装(install)
install小节同样也是一个脚本,它提供一些安装软件包的命令,如果源代码的makefile文件提供有make install命令,这一节你可以简单的包含一个make install命令,否则你就得提供一些像cp, mv或者install之类的命令集。
五、验证(verify script)
这一小节包含一个验证软件包的脚本,验证软件包不属于RPM的能力范围。
六、清除(clean)
这一小节包含一个编译好以后用于清除无用信息的脚本。这一脚本很少会用到,因为在大多数环境下,RPM会做好这些工作。
七、文件列表(file list)
这一小节包含一份文件列表,它们是组成RPM包的所有文件,当你用rpm -qpl 命令查看软件包的时候就会得到这一份文件列表。在这一小节也有几个宏可以用,它们指出哪些文件是文档,哪些是配置文件,哪里是目录等。
八、维护日志(changelog)
这一小节记录了软件包的维护日志。
spec文件有一个命名规则,其文件名由以下几部份组成:
软件包名-版本号-发行号.spec
下面我们举一个简单的spec文件,然后再来说明各部分的意思。文件如下:
Summary: GNU readline library
Name: readline
Version: 5.1
Release: 1
Copyright: GPL
Group: Library
Source: ftp://172.16.100.81/soft/readline-5.1.tar.gz
URL: http://www.gnu.org/index.html
Distribution: GNU Project
Vendor: GNU
Packager: Yan Dingcheng <dingcheng_yan@yahoo.com.cn>