rpm 包创建

来源:互联网 发布:中国的下一场战争知乎 编辑:程序博客网 时间:2024/04/28 21:43

一 准备工作

    1 想清楚你要创建什么, 你想把什么打包进入一个RPM包?一个应用程序?一个库?一组配置文件还是一个文档包?

       一般来说,会创建一个源文件包和一个二进制文件包.二进制文件包用于安装(即通常的rpm包),而源文件包则会对重新构建二进制包和更新包带来极大便利(即srpm包,源码包).

 

二 构建rpm

    1 设置目录结构, 通常Redhat的系统会在/usr/src/redhat目录下进行rpm的打包创建工作.该目录下有5个子目录:

        BUILD:rpmbuild命令会在这里构建软件;

        RPMS:rpmbuild命令会将完成的二进制rpm包放到这个目录下;

        SOURCES:这里放将要打包进入rpm包的源文件;

        SPECS:这里放用于知道打包过程的spec文件;

        SRPMS:rpmbuild命令会把完成的源码rpm包放到这个目录下.

 

    * 要创建RPM包,你真正需要的只是放在SOURCE目录下的源文件和SPECS目录下的spec文件;

    * 你不应该使用root用户来打包,可能会引起严重的问题.应当修改相应目录文件权限后,使用普通用户进行打包.(但是使用普通用户打的包,在没有该用户的系统上安装的时候,可能会出现大量类似"没有这个用户"的警告...)

 

     2 将源文件放到SOURCE目录下. 你可以直接将所有的源文件放到SOURCE目录下,但更好的做法是将源文件首先达成一个tar包,然后将该tar包放到SOURCE目录下.tar包要注意命令.

 

     3 创建spec文件(详见另一篇博客文章)

        3.1 introduction段,包含包的介绍信息,当使用rpm -qi时显示.这个段有几个东西(如版本等)是必须的,但是都很简单,只要照葫芦画瓢久好了.

        3.2 prep段,prep是prepare的简写.如果源文件是一压缩包的形式提供的,这个段的指令将会进行解压缩.

        3.3 build段,这一段的作用就是将源代码进行编译生成可执行文件.当然你不应该将所有的编译工作都在这里进行,而是应该在源代码中就把编译工作安排好,然后这里直接调用你源码的编译脚本就好了(如常见的Makefile).

        3.4 install段,这一段说明如何在系统上安装软件.

        3.5 clean段,清理其他段生成的不必要的文件.

        3.6 files段,本段列举了要被打包进入rpm包的文件.

 

     4 用rpmbuild命令构建prm包.rpmbuild -ba spec_file, -ba选项是指同时生成二进制包和源码rpm包.你也可以指定选项让rpmbuild在spec文件的某一个段后就停下来,当你的构建过程有错误而你不知道错误在哪里的时候,用来进行排错尤其有用.如 rpmbuild -bp 命令会在prep段之后,在build段之前停下,这样你就可以判断错误是不是在prep段之前的打包过程中出现的.

原创粉丝点击