How to Build a RPM package for Redhat/Fedora Linux (一)
经过一周的研究,成功的BUILD了自己的第一个RPM:Apache_ssl-prima-1.3.31-15.F1.rpm。这里简单记录下我的操作。
参考文档:MAX-RPM
How to Build a RPM package for Redhat/Fedora Linux
Introduction
RPM 是 Red Hat Package Manager 的缩写。由 Red Hat Linux 首先引入的,现在已经被一些主要的 Linux 发行商采用,如 SuSE、Caldera、Conectiva ,Mandrakesoft,在Redhat的下一版Fedora Linux 中,也采用RPM软件包进行管理。
RPM包含了应用程序的所有库文件,同时还包括控制脚本。系统可以识别并且运行这些脚本,完成安装、卸载、状态检查、依赖检查等一系列工作。
在Unix、GUN/Linux中,常见的软件发行方式有两种:
1. Source源码
2. Binary包
我们分别来介绍。
How to install from Source Code?
Source源码包通常扩展名为tar.gz,即由tar进行打包,gzip进行压缩。例如:
apache_1.3.31.tar.gz
php-4.3.8.tar.gz
这些包仅仅包含源代码,要安装他必须进行编译,简单步骤如下:
[i]# wget http://192.168.0.100/download/apache_1.3.31.tar.gz
# tar zxvf apache_1.3.31.tar.gz
# cd apache_1.3.31
# ./configure \
--prefix=/usr/local/apache \
[...more...]
# make
# make install
[/i]
到此,即完成了初步的安装。我们还需要做如下设置:
1. 将apache的启动脚本加入/etc/rc.d/init.d中(不同linux系统的目录不一样),让apache随系统启动而自动启动。
2. 修改配置文档,将/usr/local/apache/conf/httpd.conf修改为我们所需要的文档。
3. 做其他更多修改。
可以看出使用源码自己编译还是比较复杂的,当然对于一个熟练的Linux用户,这些不是问题。但是当面对数台服务器,几十个包的时候,用源码自己编译,工程量是非常巨大的……
How to install from Binary package?
Binary包,是二进制的可执行文件,一般是由发布者完成了编译之后,将可执行文件打包发布的,其下载文件扩展名一般也是tar.gz。我们以MySQL 4.0.20 for FreeBSD为例:
[i]# wget http://192.168.0.100/download/mysql-4.0.20-freebsd4.3-i386.tar.gz
# tar zxvf mysql-4.0.20-freebsd4.3-i386.tar.gz
# cd mysql-4.0.20-freebsd4.3-i386
# groupadd mysql
# useradd -g mysql mysql
# scripts/mysql_install_db --user=mysql
# chown -R root .
# chown -R mysql data
# chgrp -R mysql .
# bin/mysqld_safe --user=mysql &
[/i]
现在mysql就初步安装好了。我们还需要将他加入启动组,并且继续做其他修改。使用BINARY包也是比较麻烦的,诸多步骤要执行。最理想的,就是使用RPM了。
How to use RPM to install?
Red Hat Linux的标准安装格式就是RPM,在RH的安装光盘上,可以找到所有软件的RPM。以MySQL安装为例:
# wget http://192.168.0.100/download/mysql-server-3.23.58-4.rpm
# rpm -ivh mysql-server-3.23.58-4.rpm
一切ok。MySQL会自动添加系统用户,安装不同文件到不同位置,设置为自启动,自动复制预先定义好了的配置文档。这些都只用一条RPM命令就可以全部完成。
当我们要进行升级时候,只要下载新版,然后运行
# rpm -Uvh mysql-server-4.0.20-4.rpm
就可以完成所有升级操作。卸载一个包也同样容易:
# rpm -e mysql-server-3.23.58-4.rpm
查看系统上所有已经安装的包:
# rpm -qa
用过几次RPM之后,就不想再自己编译,毕竟太方便了。
How to build a RPM package
建立一个RPM包需要做以下准备:
1. 目标软件的Source Code,可以是一个或者多个。
2. 目标软件的Patch和预先定义的配置文档。
3. 过程控制文件,即SPEC文件。这个文件明确了相应包中的文件将被安放到哪里,软件正确运行要依赖哪些其他程序,安装卸载前后要执行哪些程序,是谁在什么时候建立的这个包,还有一段包内容的描述,等等。
-----------------
一
RPM就是Round Per Minute
汗楼上的……
699
700