|
[root@linuxidc ~]# rpmbuild lsyncd-2.0.5.tar.gz //可以生成/root/rpmbuild 目录 如 果 没 有 /root/rpmbuild 目 录 , 执 行 命 令 :rpmbuild lsyncd-2.0.5.tar.gz , 会 自 动 生 成 4.拷贝 lsyncd 源码到/root/rpmbuild/SOURCES 目录下,此时,所有子目录下只有 SOURCES 下有 lsyncd-2.0.5.tar.gz 一个文件 [root@linuxidc rpmbuild]# tree 二、生成 spec 规则文件 (rpm -qpi 查看的内容来源于此文件) [root@linuxidc rpmbuild]# cd SPECS [root@linuxidc SPECS]# vim lsyncd-2.0.5.spec 注意一定要用 vim 编辑才会自动生成模板文件。 该文件内容为自动生成的模板,待会根据需要手工修改,暂时保存退出即可。 1.重要部分解释 Source0: //源码名称 BuildRequires: //软件依赖关系描述(可以省略) Requires: //该 rpm 包所依赖的软件包名称 %build //本段是建立段,所执行的命令为生成软件包服务,相当于./configure 和 make %install //这一节主要用于完成实际安装软件必须执行的命令,这一节一般是由make install 指令构成,但是有时也会包含 cp、mv、install 等指令 %clean //这一节所描述的内容表示在完成包建立的工作之后,自动执行此节下的脚本进行附加的清除工作,这一节的内容通常简单地使用 rm -rf $RPM_BUILD_ROOT 命令, 不需要指定此节的其它内容 %files //这一节指定构成包的文件的列表,它是使用节前缀%files 表示的。此外,它还包含一系列宏控制安装后的文件属性和配置信息。,分为三类--说明文档(doc), 配置文件(config)及执行程序,也根据提示编写。%files 下列出应该捆绑到 RPM 中的文件,并能够可选地设置许可权和其它信息 2.编辑 lsyncd 的 spec 规则文件 (编辑 lsyncd-2.0.5.spec 文件,先填写可以确定的部分) Source0: lsyncd-2.0.5.tar.gz //注意名称要写对,文件名字必须与源码一致 %install rm -rf $RPM_BUILD_ROOT make install DESTDIR=$RPM_BUILD_ROOT //此处没有填写完整,需根据“make install”的输出填写。 %files //此处还没有填写,后面根据提示再修改。 %changelog //下面填写编译时间 5 月 22 日,日期格式为 date +"%a %b %d %Y",必须以*开头,以--end结尾 * Tue May 22 2012 --end 如何确定其它的参数内容呢,可以根据一下步骤,一步步填写 3.安装源码包 [root@lsyncd lsyncd-2.0.5]# ./configure //看看配置时需要依赖哪些软件包 //在配置过程中,需要的软件依赖包为 lua-devel-5.1.4-4.1.el6.i686.rpm,那么 lsyncd-2.0.5.spec 中,"BuildRequires: Requires:"软件依赖配置就可以写上 lua-devel。 [root@linuxidc lsyncd-2.0.5]# make [root@linuxidc lsyncd-2.0.5]# make install 输出的内容就是 lsyncd-2.0.5.spec 文件中“%install”后面需要填写的内容,表示安装哪些文件到哪些路径下,但要修改格式。 1.将这一段内容中所有的/usr/local 修改为变量$RPM_BUILD_ROOT,因为制作 rpm 包时并不需要将文件安装到实际的路径,所以暂时安装在$RPM_BUILD_ROOT 中,其实就是/root/rpmbuild/BUILDROOT/lsyncd-2.0.5-1.el6.i386 这个临时目录。 2.将这一段内容中所有的单引号去掉或者换成双引号,因为要允许变量。 到现在,lsyncd-2.0.5.spec 文件中还有“%files”没有填写。%files 表示编译完成的软件到底包括那些文件,可以执行 rpmbuild -bb lsyncd-2.0.5.spec,根据提示可以得到%files 的内容。 [root@vmware1 SPECS]# rpmbuild -bb lsyncd-2.0.5.spec 在最后会有这一段关于这些文件的错误,这里列出的所有文件,就是我们需要填写入 lsyncd-2.0.5.spec 中%files 的内容。 三、到这里所有 lsyncd-2.0.5.spec 中所有内容编写完毕,再次执行 rpmbuild 命令 [root@linuxidc SPECS]# rpmbuild -ba lsyncd-2.0.5.spec //顺利通过编译,使用-ba 生成 rpm 包和 srpm 包,查看生成的目标 rpm 包 [root@linuxidc rpmbuild]# tree *RPMS [root@linuxidc rpmbuild]# rpm -qpi RPMS/i386/lsyncd-2.0.5-1.el6.i386.rpm [root@linuxidc i386]# rpm -ivh lsyncd-2.0.5-1.el6.i386.rpm [root@linuxidc i386]# rpm -qa | grep lsyncd [root@linuxidc i386]# rpm -ql lsyncd 通过 rpm 的查询命令发现 lsyncd 的信息,都是我们之前配置的内容。
# T; _0 @: R- I H2 a1 r' Y |