Chinaunix首页 | 论坛 | 博客
  • 博客访问: 378923
  • 博文数量: 48
  • 博客积分: 743
  • 博客等级: 上士
  • 技术积分: 956
  • 用 户 组: 普通用户
  • 注册时间: 2011-11-22 13:51
文章分类

全部博文(48)

文章存档

2015年(3)

2014年(17)

2012年(23)

2011年(5)

分类: LINUX

2014-01-07 18:12:56

1.RPM简介

    RPM(Red Hat Package Manager)是用于 Linux 发行版(distribution)的最常见的软件包管理器,多用于红帽系操作系统(如Redhat、Fedora、Centos等),Mandriva、SuSE等也使用。因为它允许分发已编译的软件,所以用户只用一个命令就可以安装软件。rpm打包工具是广泛使用的用于交付 Linux 软件的工具,用户可以轻松的安装用 RPM 打包的产品。
     在一个操作系统下,需要安装实现各种功能的软件包。这些软件包一般都有各自的程序,但是同时也有错综复杂的依赖关系。同时还需要 解决软件包的版本,以及安装,配置,卸载的自动化问题。为了解决 这些问题,RedHat针对自己的系统提出了一个较好的办法来管理成千上百的软件。这就是RPM管理系统。在系统中安装了rpm管理系统以后, 只要是符合rpm文件标准的打包程序都可以方便地安装、升级、卸载。

2.准备工作

    在开始rpm打包工作以前,请确保您的系统已安装了 rpm-build 软件包。为检查是否安装,请运行 rpm -q rpm-build。如果您看到的是 package rpm-build is not installed 之类信息,则将需要从 Red Hat 安装 CD 上或通过其他途径安装它 (可使用rpm -ivh命令安装)
安装好rpm-build工具后还需要
a.在家目录下创建rpm打包的工作目录:(可选,因为执行rpmbuild -ba *.spec命令后会自动创建)
[user@hostname ~]$ mkdir -p ~/rpmbuild/{BUILD,RPMS,SOURCES,SPECS,SRPMS}

b.设置本地的rpm宏文件:(可选)

[user@host ~]$ echo '%_topdir %(echo $HOME)/rpmbuild' > ~/.rpmmacros

注: 
    1.rpmbuild的目录结构(rpmbuild/{BUILD,BUILDROOT,RPMS,SOURCES,SPECS,SRPMS})各目录的作用:

rpmbuild

|-- BUILD //解压后的源码包存放目录,编译源码的目录
|-- BUILDROOT //模拟安装位置(临时构建目录)
|-- RPMS //二进制源码包生成后的存放目录
|-- SOURCES //源码包放这里,一般为*.tar.gz文件
|-- SPECS //*.spec文件放在位置
`-- SRPMS //源码包rpm生成后放置的位置


    2.宏(Macros)是使用变量和功能来控制rpm和 rpmbuild 的自定义的行为,宏指令一般地定义在 spec 文件中.语法象 %define macro value .宏指定也可以事先在配置文件中调整.
就是下面的文件.

  • 默认设置为 /usr/lib/rpm/macros or /etc/rpm/macros
  • 用户设置 ~/.rpmmacros
在打包的过程中,spec 文件 和 rpmbuild 命令能使用RPM的宏命令中的变量.

其他工具:make 、 gcc  

3.开始工作

    打包一个软件为rpm包,需要使用一个特定的.spec文件(如rpm.spec)指定打包规则。通过执行命令如:rpmbuild -ba rpm.spec生成rpm包。
下以dos2unix程序为例:

  • 将下载的dos2unix-3.2.tar.gz压缩文件放到~/rpmbuild/SOURCES目录下
  • ~/rpmbuild/SPECS目录编写dos2unix.spec文件
vi dos2unix.spec

点击(此处)折叠或打开

  1. Summary: GNU indent
  2. Name: dos2unix
  3. Version: 3.2
  4. Release: 2
  5. Source0: %{name}-%{version}.tar.gz
  6. License: GPL
  7. Group: Development/Tools
  8. BuildRoot: %{_builddir}/%{name}-root
  9. %description
  10. The GNU dos2unix program.
  11. %prep
  12. %setup -q
  13. echo ${RPM_BUILD_ROOT}
  14. %build
  15. make
  16. %install
  17. rm -rf $RPM_BUILD_ROOT
  18. make DESTDIR=$RPM_BUILD_ROOT install
  19. %clean
  20. #rm -rf $RPM_BUILD_ROOT
  21. %files
  22. %defattr(-,root,root,-)
  23. /usr/bin/dos2unix
  24. /usr/bin/mac2unix
  25. %doc /usr/share/man/man1/
  • ~/rpmbuild/SPECS目录执行 rpmbuild -ba dos2unix.spec命令,此时将在~/rpmbuild/RPMS目录下生成dos2unix-3.2-2.x86_64.rpm、在~/rpmbuild/SRPMS目录下生成dos2unix-3.2-2.src.rpm

下面总结了在您运行  rpmbuild -ba dos2unix.spec 时,RPM 都做些什么:

  • 读取并解析 dos2unix.spec 文件
  • 运行 %prep 部分来将源代码解包到一个临时目录,并应用所有的补丁程序。
  • 运行 %build 部分来编译代码。
  • 运行 %install 部分将代码安装到构建机器的目录中。
  • 读取 %files 部分的文件列表,收集文件并创建二进制和源 RPM 文件。
  • 运行 %clean 部分来除去临时构建目录。

下一篇文章将具体介绍spec文件的具体规则
阅读(1722) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~