HOME 生活记录运维/编程
作者/来源:yixinu.com
栏目:运维/编程
日期:2012-06-11 15:49:12

rpmbuild  作用是将源码包编译成  rpm 包,或srpm包


1、使用的路径和需要的软件

    书上说  rpmbuild  进行编译的路径是在   /usr/src 这个目录 ,我装好 rpm-build 这个包后并没有在这个目录 下找到  redhat 的目录 ,编译的时候也没找到这个目录 ,到是在这里找到了  ,这里不明白 为什么 ??



[root@localhost ~]# ls /root/rpmbuild/ -al
total 32
drwxr-xr-x.  8 root root 4096 Jun 11 02:15 .
dr-xr-x---. 25 root root 4096 Jun 12 07:40 ..
drwxr-xr-x.  4 root root 4096 Jun 12 06:36 BUILD
drwxr-xr-x.  2 root root 4096 Jun 12 06:40 BUILDROOT
drwxr-xr-x.  3 root root 4096 Jun 12 06:40 RPMS
drwxr-xr-x.  2 root root 4096 Jun 11 02:16 SOURCES
drwxr-xr-x.  2 root root 4096 Jun 11 02:15 SPECS
drwxr-xr-x.  2 root root 4096 Jun 12 06:40 SRPMS


    各个目录 的作用:

        SPECS:这个目录当中放置的是该软件的配置文件,例如这个软件的信息参数、设定项目等等都放置在这里; (但是在实际编译的时候 ,并不需要一定放在这里,spec 文件放到哪里都行

        SOURCES:这个目录放软件的原代码包文件  (*.tar.gz 的档案) 以及 config 这个配置文件;

        BUILD:在编译过程中,暂存的数据会放在这个目录

        RPMS:成功的编译之后,生成的  RPM  包都会放在这个目录中

        SRPMS:与RPMS目录相似,成功编译之后生成的 srpm 文件会放在这里。。


2、开始编译之前要装好编译环境 ,如 gcc  之类的   这里我是这样安装 的   yum groupinstall "Development Tools"

 

3、编写 spec  配置文件



Summary:          Messaging and membership subsystem for High-Availability Linux
Name:             heartbeat
Version:          3.0.5
#Release:          %{?alphatag:0.}%{specversion}%{?alphatag:.%{alphatag}}%{?dist}
Release:          1%{?dist}
License:          GPLv2 and LGPLv2+
URL:              http://linux-ha.org/
Group:            System Environment/Daemons
Source0:          heartbeat.tar.bz2
BuildRoot:        %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
BuildRequires:    glib2-devel
BuildRequires:    iputils

……



    整个文件以  Summary  开头,这是软件包的主要说明部分。

    Name  : 这是软件的名称   ,    也将是RPM文件名的构成之一

    Version  : 软件的版本号

    Release:这是该 软件的打包次数说明

    License :这个软件的授权模式,我们是使用 GPL 啦! 

    Group:这个软件的发展团队名称

    URL:该软件的官方网站

    Source0/Source :这是源代码包的名称 ,也是软件的名称 ,要与  SOURCES 目录中放置的文件名相同。。

    BuildRoot:编译时,使用哪个目录来暂存中间文件。

    BuildRequires:编译过程中所需要的软件,编译之前需要安装上。。

    Requires:表示安装这个软件还需要其它软件支持,在这里写出来,安装  RPM  包时,系统 会自动 去检查依赖关系 ,这就是依赖关系 的来源 。。


以上选项必须填写。

    %package  : 这个不知道什么意思

    %description :该 软件的一个简短的说明

    %prep:包编译之前需要做的事

    %setup:就是类似解压缩的选项。。(书中说一定要写,可是我看  heartbeat 的 spec  文件中并没有写这个选项

    %build:编译,这个段落就是在谈怎样 make 编译成为可执行的程序! 你会发现在此部分的程序代码,就是 ./configure, make 

    %install:编译完成 (build) 之后,就是要安装啦!安装就是写在这里,也就是类似 Tarball 里面的 make install 的意思

    %clean:编译不安装完毕后,必须要将一些暂存在 BuildRoot 内的数据删除才好, 因此这个时候这个 clean 的项目就重要啦

    %files:该 软件安装需要 的文件都写到这里,也包括目录 ,

    %changelog:这个选项,主要记录这个软件曾经的更新记录  * 表示时间, - 表示更新的详细说明



4、 rpmbuild  编译选项

       

                rpmbuild -ba  name   编译并同时产生RPM与SRPM文件

                rpmbuild -bb name    仅产生 RPM 文件


5、编译过程

        暂未做研究


分享到:

Copyright © 2013-2014 yixinu.com 湘ICP备14004402号

QQ:316686606  Email: 316686606@qq.com