• Nginx RPM打包


    --亲测成功--

    注意:打包要以普通用户进行

    这里我创建普通用户laowang 

    总体说来,RPM打包分4个步骤

    1, 搜集源码包,即下载想要打成RPM包的相关源码包(tar)、补丁、或者配置文件

    我这里下载了Nginx的源码包:nginx-1.22.1.tar.gz

    2, 准备好SPEC文件, SPEC文件类似于SHELL,控制打包的时候具体做什么操作,这里是核心关键

    1. # 软件名
    2. Name: nginx
    3. # 版本号
    4. Version: 1.22.1
    5. # 发布编号
    6. Release: 1%{?dist}
    7. # 软件说明
    8. Summary(zh_CN): 这是nginx项目
    9. # 软件包的版权协议
    10. License: GPLv3+
    11. URL: http://nginx.org/download/
    12. Source0: nginx-1.22.1.tar.gz
    13. # 编译需要的依赖
    14. BuildRequires: gcc
    15. # 本软件需要的依赖
    16. Requires: pcre-devel zlib-devel
    17. %description -l zh_CN
    18. 这个是一个nginx项目练手项目,进行nginx打包等操作。
    19. %prep
    20. %setup -q
    21. # 编译阶段执行的命令
    22. %build
    23. ./configure
    24. make
    25. # 安装阶段执行的命令
    26. %install
    27. rm -rf %{buildroot}/*
    28. make install DESTDIR=%{buildroot}
    29. # 安装后执行的命令
    30. %post
    31. useradd nginx -M -s /sbin/nologin
    32. # 卸载前执行的命令
    33. %preun
    34. userdel -r nginx
    35. # 将所需要打包的文件都存放到这边中;-f %{name}.lang 加上后的意思为声明找到的文件
    36. %files
    37. %{_prefix}/local/*
    38. # 软件更新说明
    39. %changelog

    3, 构建工作目录,放入原材料

     mkdir -p rpmbuild/{BUILD,BUILDROOT,RPMS,SOURCES,SPECS,SRPMS}

    将nginx.spec放入到SPECS文件夹,将源码包,或者补丁等相关程序放入SOURCES文件夹

    目录结构如下

    1. rpmbuild]# tree ../rpmbuild
    2. ../rpmbuild
    3. |-- BUILD
    4. |-- BUILDROOT
    5. |-- RPMS
    6. |-- SOURCES
    7. | `-- nginx-1.22.1.tar.gz
    8. |-- SPECS
    9. | `-- nginx.spec
    10. `-- SRPMS

    4, 检查SPEC文件语法

    rpmlint   是一个用来检查SPEC的工具

    rpmlint  nginx.spec 

    1. SPECS]# rpmlint nginx.spec
    2. nginx.spec:28: W: configure-without-libdir-spec
    3. nginx.spec:45: W: macro-in-comment %{name}
    4. nginx.spec:47: W: files-attr-not-set
    5. nginx.spec: W: no-cleaning-of-buildroot %clean
    6. nginx.spec: W: no-buildroot-tag
    7. nginx.spec: W: no-%clean-section
    8. nginx.spec: W: invalid-url Source0: nginx-1.22.1.tar.gz
    9. 0 packages and 1 specfiles checked; 0 errors, 7 warnings.

     W: configure-without-libdir-spec: 表示没有使用%configure or %configure2_5x, 我们nginx包中自带configure,忽略告警

    W: files-attr-not-set:没设置文件权限属性

    没有错误,7个告警,忽略

    5, 开始打包

    在SPECS目录下开始打包

    rpmbuild -ba nginx.spec, 打包成功后末尾会提示exit 0

    rpmbuild相关常用选项:

    • rpmbuild -bp 只执行到prep阶段
    • rpmbuild -bi 执行到install阶段
    • rpmbuild -bc 执行到build阶段
    • rpmbuild -bb 制作二进制格式的RPM包
    • rpmbuild -bs 制作源码格式的RPM包
    • rpmbuild -ba 同时制作二进制和源码包
    • rpmbuild -bl 检测有哪些文件在buildroot存在,但是却在制作的file段没包含的
    1. Executing(%clean): /bin/sh -e /var/tmp/rpm-tmp.LxhSPc
    2. + umask 022
    3. + cd /home/laowang/rpmbuild/BUILD
    4. + cd nginx-1.22.1
    5. + /bin/rm -rf /home/laowang/rpmbuild/BUILDROOT/nginx-1.22.1-1.el6.x86_64
    6. + exit 0

    打包成功后,文件目录如下

    1. rpmbuild]$ tree BUILDROOT RPMS SOURCES SPECS SRPMS
    2. BUILDROOT
    3. RPMS
    4. `-- x86_64
    5. |-- nginx-1.22.1-1.el6.x86_64.rpm
    6. `-- nginx-debuginfo-1.22.1-1.el6.x86_64.rpm
    7. SOURCES
    8. |-- nginx-1.22.1.tar.gz
    9. `-- nginx.conf
    10. SPECS
    11. `-- nginx.spec
    12. SRPMS
    13. `-- nginx-1.22.1-1.el6.src.rpm

     成功的RPM包会在RPMS目录下,RPM源码包在SRPMS下。

    6, 将包挪到目标server上进行安装验证

    1. servers]# rpm -ivh nginx-1.22.1-1.el6.x86_64.rpm
    2. Preparing... ################################# [100%]
    3. Updating / installing...
    4. 1:nginx-1.22.1-1.el6 ################################# [100%]
    5. Group 'mail' not found. Creating the user mailbox file with 0600 mode.

  • 相关阅读:
    sql添加索引
    SpringBoot读取properties中配置的List集合
    哪些意想不到的空指针异常
    使用Echarts.js绘制多条折线图
    NoSQL数据库之MongoDB
    m基于遗传优化的复杂工序调度matlab仿真,输出甘特图和优化收敛图
    JS中BigInt的使用
    51单片机简易时钟闹钟八位数码管显示仿真( proteus仿真+程序+原理图+报告+讲解视频)
    SOC TOP集成基础脚本范例
    网易校园招聘历年经典面试题汇总:C++研发岗
  • 原文地址:https://blog.csdn.net/JSWANGCHANG/article/details/128033260