什么是rpm包?

rpm 相当于windows中的安装文件,它会自动处理软件包之间的依赖关系。

  • rpm优点:
    包管理系统简单,通过几个命令就可以实现包的安装、升级、卸载。
    安装速度比源码包快的多。
  • 缺点:
    经过编译,不能看到源代码,功能选择不如源码灵活。依赖性强。

首先说一下流程:
打rpm 包需要的东西有 源码、spec文件(打rpm包的脚本)、rpmbuild工具。

1. 安装rpmbuild

$yum install rpmbuild
$yum install rpmdevtools
$rpmdev-setuptree

此时rpmbuild已经安装好了,可以查看一下

rpmbuild --showrc | grep topdir 

进入rpmbuild 目录文件夹如下:

各个文件夹的用途:

2. 创建用户

此处建议创建一个用户,用于rpm的打包操作

1. #创建用户
useradd rpmuser
su - rpmuser 2. #定义工作目录(或车间)吧
vi ~/.rpmmacros
%_topdir   /home/rpmuser/rpmbuild    ##目录可以自定义 mkdir ~/rpmbuild
3. #在topdir下建立需要的目录
cd ~/rpmbuild
mkdir -pv {BUILD,BUILDROOT,RPMS,SOURCES,SPECS,SRPMS} 

3. 整理源码

rpmbuild安装完成以后我门就需要将我们的源码放到 SOURCE 文件夹下。我门的源码可能是一个tar.gz 的包、也可能是几个文件。

tar.gz源码包的名字格式应该为 helloword-1.0.0.tar.gz (其实就是名字-版本号.tar.gz)

4. 编写spec文件

在SPECS文件夹下新建 xxx.spec 打包脚本,其实也就是把我门的源码编译打包成rpm 的一个过程。

vi  xxx.spec Name:           hellorpm           #名字为源码tar.gz 包的名字
Version:        1.0.0             #版本号,一定要与tar.gz包的一致哦
Release:        1%{?dist}         #释出号,也就是第几次制作rpm
Summary:       helloword   #软件包简介,最好不要超过50字符 License:        GPL                   #许可,GPL还是BSD等
URL:            #可以写一个网址
Packager:       abel
Source0:        %{name}-%{version}.tar.gz
#定义用到的source,也就是你的源码BuildRoot:      %_topdir/BUILDROOT
#这个是软件make install 的测试安装目录.BuildRequires:  gcc,make                           #制作过程中用到的软件包
Requires:       python-apscheduler >= 2.1.2-1.el7,python-daemon >= 1.6-1.el7  #软件运行依赖的软件包,也可以指定最低版本如 bash >= 1.1.1
%description                #描述,随便写
%prep                          #打包开始
%setup -q                      #这个作用静默模式解压并cd                               %build              #编译制作阶段,主要目的就是编译,如果不用编译就为空
./configure \                                     %{?_smp_mflags}          #make后面的意思是:如果就多处理器的话make时并行编译 %install                        #安装阶段
rm -rf %{buildroot}             #先删除原来的安装的,如果你不是第一次安装的话 cp -rp %_topdir/BUILD/%{name}-%{version}/*  $RPM_BUILD_ROOT
#将需要需要打包的文件从BUILD 文件夹中拷贝到BUILDROOT文件夹下。#下面的几步pre、post、preun、postun 没必要可以不写
%pre        #rpm安装前制行的脚本 %post       #安装后执行的脚本 %preun      #卸载前执行的脚本 %postun     #卸载后执行的脚本 %clean #清理段,删除buildroot
rm -rf %{buildroot} %files  #rpm要包含的文件
%defattr (-,root,root,-)   #设定默认权限,如果下面没有指定权限,则继承默认
/etc/hello/word/helloword.c           #将你需要打包的文件或目录写下来###  7.chagelog section  改变日志段
%changelog

注意:

以上阶段如果没有操作的话,为空,但是不能有空行,例如build阶段为空应写为

%build
%install
xxxxxxxx   错误示例:
%build   

%install
xxxxxxxx

rpm包制作阶段

5. 打包

spec 文件编写好以后就可以进行打包了。
在SPECS文件夹下执行命令:

rpmbuild -bb xxx.spec

如果出错了可以通过 不同的命令来看是在打包的那一步出了问题。

rpmbuild
-ba 既生成src.rpm又生成二进制rpm
-bs 只生成src的rpm
-bb 只生二进制的rpm
-bp 执行到pre
-bc 执行到 build段
-bi 执行install段
-bl 检测有文件没包含 

可以先rpmbuild -bp ,再-bc 再-bi 如果没问题,rpmbuild -ba 生成src包与二进制包。

本文参考:
http://laoguang.blog.51cto.com/6013350/1103628/
http://blog.chinaunix.net/uid-23069658-id-3944462.html

rpmbuild制作rpm 包相关推荐

  1. centos7使用rpmbuild制作rpm包

    本文作为我实验的一个总结文档,可能实现的功能比较简单,适合于想要简单入门使用的,希望对朋友们有所帮助 下载rpmbuild程序包 所用系统 centos7.6 yum install rpm-buil ...

  2. 【rpm】源码包制作rpm包|修改rpm、重新制作rpm包

    目录 前言 安装rpmbuild rpmbuild制作rpm 包 同时生成devel包 修改rpm.重新制作rpm包 RPM 打包 工具 SPEC文件 spec文件关键字说明大全 rpmbuild的目 ...

  3. linux qt make文件或目录,rpm,linux_为Qt程序制作rpm包的spec文件里的路径问题,rpm,linux,qt,rpmbuild,spec - phpStudy...

    为Qt程序制作rpm包的spec文件里的路径问题 我对Qt和rpm都不怎么熟悉,所以在为Qt程序制作rpm包的时候被路径问题纠结到了. Qt的.pro文件的相关部分是这么写的,其中AppName是我的 ...

  4. 使用rpmbuild制作jdk的包_Centos下使用rpmbuild以及checkinstall制作RPM包

    rpmbuild 生成rpm包. 包有两种,binary包和source包. rpm包有包信息和内容组成.rpm -qpi nginx.rpm可以查看到包的信息. 如: relocations:如果非 ...

  5. CentOS yumdownloader命令和rpmbuild命令制作rpm包

    CentOS 7.6环境 安装mock / rpm-build / yum-utils 三个用于编译rpm包的工具 su -c "yum install -y mock rpm-build ...

  6. linux内核源码制作rpm包,cmatrix源码包制作rpm包

    第一步:下载cmatrix.tar.gz(包含有已写好的cmatrix.spec文件) 第二步:检测编译环境: # yum isntall gcc gcc-c++ make rpm-bulid # r ...

  7. python项目使用setuptools和rpmbuild构建rpm包

    python项目使用setuptools和rpmbuild构建rpm包 文章目录 python项目使用setuptools和rpmbuild构建rpm包 一.setuptools 二.使用rpmbui ...

  8. linux下程序制作rpm包,制作rpm包

    这文章我不记得在那转的了,已经有一段时间了 如何在linux或CentOS下制作RPM包 但我觉得单纯明白用.spec生成rpm是不够的.常见有两个原因值得我们去了解用如何用源码制作rpm: 引用 1 ...

  9. linux如何运行rpm包,如何制作RPM包

    安装制作rpm工具rpmbuild yum install -y rpm-build 创建用户 注意: 创建rpm包一定不要使用root用户,因为root用户权限比较大,如果脚本编写错误的话,可能会导 ...

最新文章

  1. 学用 TStringGrid [7] - ColWidths[0]、RowHeights[0]、GridLineWidth
  2. ASP.NET MVC 实现二级域名(泛域名)
  3. module_param 在内核编程中的作用
  4. mysql如何做计划任务_简单的mysql 过程计划任务
  5. jsonp的简单学习
  6. 三次样条插值matlab,Matlab关于三次样条插值
  7. 向园子里的朋友探讨一个问题:如果判定一个对象已被处置
  8. 02-body标签中相关标签
  9. 最新度盘高速下载神器,免登录不限速,非常牛批!
  10. yml文件和properties文件区别
  11. 小组取什么名字好_学习小组起什么名字比较好
  12. 机器学习课程讲义·第二章,线性模型系列
  13. 2018下半年计算机学科竞赛,2018年度下半年五大学科竞赛,其他赛事时间预告高一高二请收好,不要错过报名.doc...
  14. 厨电智能化趋势下,究竟什么才是真正的“用户思维”?
  15. php 重命名中有斜杠,php如何去除转义字符中的反斜杠
  16. 【Activity学习五】--基于SSM整合Activiti之请假流程实现(二)
  17. 京东DPG图片压缩调研
  18. MyTinySTL的rb_tree源码分析
  19. Maven跳过单元测试配置
  20. 【区块链】Go 实现简单区块链

热门文章

  1. 【Linux】使用cat命令创建文本文件
  2. NXP i.MX 8M Plus工业开发板硬件说明书--上册( 四核ARM Cortex-A53 + 单核ARM Cortex-M7,主频1.6GHz)
  3. 不下载英语包 Vista照样可以玩梦幻桌面
  4. 【论文学习】《Transfer Learning from Speaker Verification to Multispeaker Text-To-Speech Synthesis》
  5. 测试大白菜软件,大白菜memtest内存清理测试工具的简介
  6. 华为HCIP-DATACOM题库解析51-70(821)
  7. 超级签名是怎么实现的?如何申请超级签名?
  8. 推荐|6 款免费又好用的远程管理工具
  9. Dubbo+Flutter在线交友平台教程第一天 项目介绍和框架搭建
  10. 2022年最新浙江水利水电施工安全员模拟试题及答案