****从源码包到制作 RPM 包 到 YUM 源的配置安装软件 ****

step1: 下载源码包到本机  , 以arp-scan 为例 --- www.baidu.com 可以搜索到其源码包 arp-scan-1.8.tar.gz

step2: 在目标源码包所在的目录下可以用 rpmbuild + arp-scan-1.8.tar.gz 可以自动生成 /root/rpmbuild 文件

step3: 进入/root/rpmbuild 文件, 可以看到有BUILD BUILDROOT RPMS SOURCES SRPMS SPECS 这六个文件夹

step4: 将源码包拷贝到/root/rpmbuild/SOURSES 文件夹下

step5: 进入/root/rpmbuild/SPEC文件夹 , 创建一个名为arp-scan-1.8.spec的文件, 在该文件夹下的格式会自动给定.

step6: 编辑上一步中所生成的文件将 有空的地方补齐.有些地方不知道怎么写的可以先不写, 记住最后一定要加上文本结束的标记及日期等,文末有该文件的详解. 

step7: 将下载的源码包解压到/usr/src 目录下, 进入目录便可执行编译运行./configure 如果有依赖关系便会报错 

   ****从源码包到制作 RPM 包 到 YUM 源的配置安装软件 ****_RPM包的制作及yum源的自动安装

step8: 报错提示缺少 libpcap 0.8 的软件, 可以去百度搜索下载对应版本即可. 本实验下载的是libpcap-1.5.3.tar.gz

step9: 编译安装上一步所下载的插件, 可以首先把插件拷到/usr/src 和 /root/rpmbuild/SOURSES 目录下然后解压安装 ./configure make make install ;

step10: 在/usr/src/arp-scan-1.8目录下配置./configure 发现错误解除 .

   ****从源码包到制作 RPM 包 到 YUM 源的配置安装软件 ****_RPM包的制作及yum源的自动安装_02

step11: 这时用 make ; make install  可以知道安装执行了哪些操作, 将所执行的操作内容放置到 /root/rpmbuild/SPECS/arp-scan-1.8.spec文件的%install 下.注意将 /usr/local 全部替换成$RPM_BUILD_ROOT保存文件即可 .

   ****从源码包到制作 RPM 包 到 YUM 源的配置安装软件 ****_RPM包的制作及yum源的自动安装_03

step12:  此时进入/root/rpmbuild/SPECS 文件夹下 用命令rpm -bb arp-scan-1.8.tar.gz 可以知道表示编译完成的软件到底
包括那些文件.

   ****从源码包到制作 RPM 包 到 YUM 源的配置安装软件 ****_RPM包的制作及yum源的自动安装_04


step13: 将所需文件的操作内容放置到 /root/rpmbuild/SPECS/arp-scan-1.8.spec文件的%file 下

step14: 此时已生成了rpm 包. 大功告成 !

step15: 接下来的事情就是将生成的rpm包是指可以用yum的方式来安装 。首先将镜像光盘挂载,mount /dev/cdrom /iso ,该镜像文件的挂载点是只读的,故要加入RPM 包必须将其复制到另外一个文件夹下,这里建立文件夹myyum 

step16: 然后把挂载点的东西全部复制到myyum文件夹下 cp /iso/* /myyum -R ,然将前面生成的RPM包放入到myyum/Packages/中 ,删除myyum下的repodata文件 ,然后用 createrepo 命令生成新的repodata文件 ,这样变改变了原来的yum下的各依赖关系 ,每加一个包都要重新生成repodata文件 .具体命令为 :createrepo /myyum/ 

step17: 然后就是改变yum源了 ,进入/etc/yum.repos/rhel.base.yum 将文件路径改为file:///myyum

step18: yum clean all ----清除缓存 ,然后便可以用 yum install arp-scan 安装软件包了.

./configure ----- 生成makefile 文件  -----make -----生成二进制文件到当前目录下 ---- make install ---- 将二进制文件拷贝到指定目录下 .


rpmbuild -bb cmatrix.spec 的工作原理  :

利用cmatrix源码包中解压后的文件./configure 可以知道安装该软件时需要那些软件的依赖关系这些依赖关系便可写在cmatrix.spec 文件的BuildRequires 中,将依赖关系解决之后 ,可以利用解压文件的make ;make install 运行后可以知道安装该软件所需要的一些操作步骤包括执行的命令等,这些命令或者操作需要写在%install下 ,接下来,安装该软件所需要的文件就可以通过 rpmbuild -bb cmatrix.spec 得到,将命令生成的这些文件复制到%file下便形成了一个真正意义上的spec文件 ,通过此文件可以由rpmbuild -ba cmatrix.spec 生成RPM包 , 该命令会自动执行spec 文件下的各种命令及操作文件,以生成rpm 文件.


rpmbuild -ta cmatrix.tar.gz 的工作原理 :

 由于 cmatrix.tar.gz 文件中本身有一个spec 文件,即其安装方式安装路径安装步骤都已经写清楚了,只有少部分的细节要修正 ,修正完后 ,将该文件夹重新打包得到一个新的.tar.gz类型的文件 ,用rpmbuild -ta cmatrix.tar.gz 即完成了该软件生成RPM包的过程 

spec 文件中各部分意思简单解释如下:

Name: //软件名称,如 arp-scan,后面可使用%{name}的方式引用

Version: //软件版本号, 仅当软件较以前有较大改变时才增加版本号.如 1.8 

Release:     1%{?dist} //软件发布序列号,标明第几次打包。若软件较以前改变较小,则仅增加发布序列号,而改变版本号

Summary:   //概要,对软件简单的描述

Group:     //软件包所属类别,具体类别参看 rpm 的帮助文件/usr/share/doc/rpm-4.8.0/GROUPS,所有软件必须属于其中一种类型.

License:    //许可类型,如:GPL(自由软件),commercial(商业),Share(共享),GNU 等

URL:  //软件下载地址(可以省略)

Source0:   //源码名称

BuildRoot:     %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX)
                  //该参数非常重要,因为在生成 rpm 的过程中,执行 make install 时就会把软件安装到上述的路径中,在打包的时候,同样依赖“虚拟目录”为“根目录”进行操作. 后面可使用$RPM_BUILD_ROOT 方式引用.

BuildRequires:   //软件依赖关系描述(可以省略)

Requires: //该 rpm 包所依赖的软件包名称

%description //对软件的详细描述,可以写多行

%prep //这个段是预处理段,通常用来执行一些解开源程序包的命令,为下一步的编译安装作准备.-->提取源码到 BUILD 目录; -q 指不显示输出(quietly)

%setup -q

%build    //本段是建立段,所执行的命令为生成软件包服务,相当于./configure 和 make

%configure
make %{?_smp_mflags}

%install   //这一节主要用于完成实际安装软件必须执行的命令,这一节一般是由make install 指令构成,但是有时也会包含 cp、mv、install 等指令
rm -rf $RPM_BUILD_ROOT
make install DESTDIR=$RPM_BUILD_ROOT

%clean  //这一节所描述的内容表示在完成包建立的工作之后,自动执行此节下的脚本进行附加的清除工作,这一节的内容通常简单地使用 rm -rf $RPM_BUILD_ROOT 命令,不需要指定此节的其它内容
rm -rf $RPM_BUILD_ROOT   //这一节指定构成包的文件的列表,它是使用节前缀%files 表示的.

%files
此外,它还包含一系列宏控制安装后的文件属性和配置信息,分为三类--说明文档(doc),配置文件(config)及执行程序,也根据提示编写.

%files 下列出应该捆绑到 RPM 中的文件,并能够可选地设置许可权和其它信息.
%defattr(-,root,root,-)   //指定包装文件的属性,分别是(mode,owner,group),-表示默认值,对文本文件0644,可执行文件是 0755

%doc
%changelog
%changelog

Sar Apr 12 2014 <root@yuli>//本段是修改日志段。你可以将软件的每次修改记录到这里,保存到发
布的软件包中

--end // 这里的结束标志必须加上, 否则会报错. 

 

 

 

                                                                          指导老师:双星科技,冯德勇