教你学会制作rpm安装包

我们在企业中有的软件基本都是编译的,我们每次安装都得编译,那怎么办呢?那就根据我们的需求制作RPM安装包吧。先来说说基本布骤:

1.Planning what you want             计划做什么rpm包。软件的?库的?

2.Gathering the software to package  收集原材料,即收集源码包

3.Patch the software as need         如果需要打补丁,收集补丁文件。此布骤不是必须

4.Outling any dependenies     确定依赖关系包

------------------  上述动作可由我们手动编译一次软件来确定  -------------------

5.Building RPMs                      开始动手制作RPM包

5.1 Set up the directory stucture 设定好目录结构,我们在这些目录中制作我们的RPM包,我们需要下列目录

BUILD源代码解压后的存放目录

RPMS    制作完成后的RPM包存放目录,里面有与平台相关的子目录

SOURCES 收集的源材料,补丁的存放位置

SPECS   SPEC文件存放目录

SRMPS   存放SRMPS生成的目录

5.2 Place the Sources in the right directory   把源材料放到正确的位置

5.3 Create a spec file that tell rpmbuild command what to do 创建spec文件,这是纲领文件,rpmbuild命令根据spec文件来制作合适的rpm包

5.4 Build the source and binary RPMS 制作src或二进制rpm包

6.Test RPMS 测试制作的PRM包

7.Add signature for RPM  为RPM包签名

二.RPM包制作实例

我还是用连贯的话为大家叙述一遍吧,我们首先确实我们要为什么做rpm包,通常我们是为一些软件,比如httpd,nginx等,然后去收集这些软件包的源代码,如果有需要的话也收集这些补丁文件,手动编译安装一下这个软件(当然如果是不需要编译的就不用演练了),确定依赖的软件包,并记录下来,下面开始准备制作tengine的PRM包吧:

1.建立一个普通用户,有普通用户来制作rpm,用root的可能会因为代码问题导致毁灭的后果

useradd ibuler 

su - ibuler 

2.确定我们在哪个目录下制作RPM,通常这个目录我们topdir,这个需要在宏配置文件中指定,这个配置文件称为macrofiles,它们通常为 /usr/lib/rpm/macros:/usr/lib/rpm/macros.*:~/.rpmmacros,这个在rhel 5.8中可以通过rpmbuild --showrc | grep macrofiles  查看,6.3的我使用这个找不到,但使用是一样的。你可以通过rpmbuild --showrc | grep topdir 查看你系统默认的工作车间 

rpmbuild --showrc | grep topdir 

 

-14: _builddir  %{_topdir}/BUIL

-14: _buildrootdir  %{_topdir}/BUILDROOT 

-14: _rpmdir    %{_topdir}/RPMS 

-14: _sourcedir %{_topdir}/SOURCES 

-14: _specdir   %{_topdir}/SPECS 

-14: _srcrpmdir %{_topdir}/SRPMS 

-14: _topdir    %{getenv:HOME}/rpmbuild 

我们还是自定义工作目录(或车间)吧

vi ~/.rpmmacros 

%_topdir        /home/ibuler/rpmbuild    ##目录可以自定义 

 

mkdir ~/rpmbuild 

3.在topdir下建立需要的目录

cd ~/rpmbuild 

mkdir -pv {BUILD,BUILDROOT,RPMS,SOURCES,SPECS,SRPMS} 

4.把收集的源码放到SOURCES下

cp /tmp/tengine-1.4.2.tar.gz SOURCES  ##事先放好的

5.在SPECS下建立重要的spec文件

cd SPECS 

vi tengine.spec          ##内容见后讲解,rhel6.3会自动生成模板 

6.用rpmbuild命令制作rpm包,rpmbuild命令会根据spec文件来生成rpm包 

rpmbuild 

-ba 既生成src.rpm又生成二进制rpm 

-bs 只生成src的rpm 

-bb 只生二进制的rpm 

-bp 执行到pre 

-bc 执行到 build段 

-bi 执行install段 

-bl 检测有文件没包含 

我们可以一步步试,先rpmbuild -bp ,再-bc 再-bi 如果没问题,rpmbuild -ba 生成src包与二进制包吧

7.安装测试有没有问题,能否正常安装运行,能否正常升级,卸载有没有问题

root用户测试安装:

cd /tmp

cp /home/ibuler/rpmbuild/RPMS/x86_64/tengine-1.4.2-1.el6.x86_64.rpm /tmp 

rpm -ivh tengine-1.4.2-1.el6.x86_64.rpm  ##测试安装 

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/14310.html