当前位置:   article > 正文

CentOS下打包RPM的详细步骤(RPMBUILD命令的一个使用范例)_centos rpmbuild

centos rpmbuild

日期

2018-07-05

综述

最近在学习《鸟哥的LINUX私房菜》第23章中一个打包自己软件的范例。自己根据所学,自己总结了最新版本(CentOS Linux release 7.5.1804 (Core))的CentOS7制作rpm软件包的一般步骤。

首先,我们需要了解一些预备知识,在旧版本的CentOS中,rpmbuild工具默认的工作路径是/usr/src/redhat,因为权限原因,一般用户身份不能制作rpm软件包,只能切换到root身份才能够制作。在新版本的CentOS中,可以在一般用户主目录下新建rpmbuild目录作为rpmbuild工具的工作目录。并且,在新版本中,发行商建议为了防止系统函数库或其他文件损坏,不要使用root身份去制作rpm软件包。

详细步骤

一、必要工具的安装

其中包括make工具,若你的待安装包使用C语言写的,还需要安装gcc编译程序。最重要的是要安装rpmbuild工具。命令如下:

  1. [root@hostname ~]# yum install make
  2. [root@hostname ~]# yum install gcc
  3. [root@hostname ~]# yum install rpmbuild

二、创建制作rpm的工作目录

为了创建制作rpm的工作目录,你需要在一般用户身份的主目录下新建如下结构的目录:

rpmbuild目录,还有该目录下六个目录,包括:BUILD、BUILDROOT、RPMS、SOURCES、SPECS、SRPMS,命令如下:

[userid@hostname ~]$ mkdir -p ~/rpmbuild/{BUILD,BUILDROOT,RPMS,SOURCES,SPECS,SRPMS}

各个目录的一般用途如下简介:

  1. BUILD 编译rpm包的临时目录
  2. BUILDROOT 编译后生成的软件临时安装目录
  3. RPMS 最终生成的可安装rpm包的所在目录
  4. SOURCES 所有源代码和补丁文件的存放目录
  5. SPECS 存放SPEC文件的目录(重要)
  6. SRPMS 软件最终的rpm源码格式存放路径

三、制作源代码文件tarball生成

这里主要利用《鸟哥的LINUX私房菜》中提供的源代码进行演示。将自己的源代码打包,其中可以包括可执行文件、脚本文件、用户使用手册、配置文件还有一些其他文件。然后将打包好的压缩包放在SOURCES目录下。

  1. [userid@hostname ~]$ tar -zcv -f main-0.l.tar.gz main-0.1        #假设主目录下存在待打包的包括源代码的目录=>main-0.1
  2. [userid@hostname ~]$ cp main-0.1.tar.gz ~/rpmbuild/SOURCES       #将打包好的源代码拷贝到SOURCES目录下

四、新建*.spec的设置文件

这个spec文件的设置是整个打包过程中最重要的一环,必须仔细设置。在SPECS目录下新建该目录,并且进入该文件进行设置,其中文件中各个宏名(例如%install)的具体含义请参考文献【4】

  1. [userid@hostname ~]$ cd ~/rpmbuild/SPECS
  2. [userid@hostname ~]$ vim main.spec
  3. 1 Name:           main
  4. 2 Version:        0.1
  5. 3 Release:        1%{?dist}
  6. 4 Summary:        Calculate sin and cos value
  7. 5
  8. 6 License:        GPL
  9. 7 URL:            http://linux.vbird.org
  10. 8 Source0:        main-0.1.tar.gz
  11. 9
  12. 10
  13. 11 %description
  14. 12 This package will let you input your name and calculate sin and cos value
  15. 13
  16. 14 %prep
  17. 15 %setup -q
  18. 16
  19. 17
  20. 18 %build                                      #执行编译命令,编译后会在BUILD目录下存在暂时文件
  21. 19 make
  22. 20
  23. 21 %install                    
  24. 22 rm -rf %{buildroot}
  25. 23 mkdir -p %{buildroot}/usr/local/bin         #将编译完成源代码试安装在~/rpmbuild/BUILDROOT目录下,其中的宏%{buildroot}=~/rpmbuild
  26. 24 make install RPM_INSTALL_ROOT=%{buildroot}
  27. 25
  28. 26 %files                                      #最终在安装生成的rpm软件包时的安装目录
  29. 27 /usr/local/bin/main
  30. 28
  31. 29
  32. 30 %changelog
  33. 31 * Wed Jul 4 2018 VBird Tsai <vbird@mail.vbird.idv.tw> 0.1
  34. 32 - Build the program

五、编译成为RPM和SRPM

输入如下命令,在最后出现exit 0表示生成成功。

[userid@hostname ~]$ rpmbuild -ba main.spec

六、安装和测试

输入如下命令进行安装和测试。

  1. [userid@hostname ~]$ rpm -ivh ~/rpmbuild/RPMS/x86_64/main-0.1-1.el7.x86_64.rpm    #安装main
  2. [userid@hostname ~]$ rpm -ql main                                                 #查找main的安装路径
  3. [userid@hostname ~]$ rpm -qi main                                                 #查询main相关信息

注意事项

在/usr/local/bin目录中不能有同名目录或者文件存在

参考文献

【1】https://www.cnblogs.com/masterpanda/p/5700453.html

【2】https://access.redhat.com/sites/default/files/attachments/rpm_building_howto.pdf

【3】https://wiki.centos.org/HowTos/SetupRpmBuildEnvironment

【4】https://docs.fedoraproject.org/quick-docs/en-US/creating-rpm-packages.html#con_rpm_spec_file_overview

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/468999
推荐阅读
相关标签
  

闽ICP备14008679号