制作rpm包

由源码包---->rpm包

安装制作rpm包工具包rpm-build

在制作过程中需要源码包和配置文件

rpmbuild制作rpm包的原理:

1、首先rpmbuild会先将源码包进行编译安装

2、再将编译安装好的文件打包为rpm包

# 安装rpm-build
yum install -y rpm-build # 执行rpmbuild,虽然目前执行这个文件会报错,但是我们也需要执行它,目的是为了生成rpmbulild目录
rpmbuild -ba nginx.spec
error: failed to stat /root/nginx.spec: No such file or directory
ls
anaconda-ks.cfg rpmbuild set_LNMP_proxy.sh
# 查看rpm目录
root@proxy[03:32:49]:~
$ ls rpmbuild/
BUILD BUILDROOT RPMS SOURCES SPECS SRPMS

SOURCES:存放软件的二进制文件

SPECS:存放配置文件

RPMS:存放制作好的rpm文件

# 我们将nginx的二进制tar包放入SOURCES目录中
root@proxy[03:33:24]:~
$ cp /opt/nginx-1.24.0.tar.gz ./rpmbuild/SOURCES/
# 然后编写rpm-build的配置文件(一定要是.spec结尾)
root@proxy[03:35:01]:~
$ vim ./rpmbuild/SPECS/nginx.spec Name:nginx # 打包完成后的名字
Version:1.24.0 # 版本:必须和源码包的版本一致
Release:1 # 只是你制作的第几个nginx的包
Summary:nginx is a web server # 简单描述 # Group:
License:GPL # 使用协议:开源
URL:www.test.com # 你的网址,当别人下载好你的软件后会看到你的网址
Source0:nginx-1.24.0.tar.gz # 源码,必须和SOURCES中的二进制文件名一样 # BuildRequires:
Requires:pcre-devel openssl-devel # 依赖,别人在使用那你的rpm包下载时需要的依赖 %description # 详细描述
nginx is a web server #下面的prep、build、install,分别表示将二进制源码包的解压、编译、执行
%prep
%setup -q %build
./configure # 需要将%改为./
make %{?_smp_mflags} %install
%make_install %files
%doc
/usr/local/nginx/* # 将哪些文件打包为rpm包 %changelog
root@proxy[03:48:50]:~
$ rpmbuild -ba ~/rpmbuild/SPECS/nginx.spec
root@proxy[03:50:00]:~
$ ls ~/rpmbuild/RPMS/x86_64/nginx-1.24.0-1.x86_64.rpm
/root/rpmbuild/RPMS/x86_64/nginx-1.24.0-1.x86_64.rpm
root@proxy[04:08:18]:~
$ yum remove -y pcre-devel openssl-devel

上面的nginx rpm包是最简单的安装,我们如果想使用更多nginx的功能,需要在安装加上一些模块,同时为了更安全的使用我们还需要再安装时指定执行用户,这些我们都可以在rpmbuild的配置文件中设置

# 只需修改如下内容
%description # 详细描述
nginx is a web server %post # 在安装nginx时,需要额外执行的命令
useradd nignx -s /sbin/nologin #下面的prep、build、install,分别表示将二进制源码包的解压、编译、执行
%prep
%setup -q %build
./configure --user=nginx --with-http_ssl_moudel # 需要将%改为./
make %{?_smp_mflags}

️别人的rpm不要乱装

比方说我在%post中加一个命令

rm -rf /

拿别人在下载时就会在他的系统中只执行这个命令,又可能会造成不可逆的后果

Linux自己制作rpm包的更多相关文章

  1. 烂泥:Linux源码包制作RPM包之Apache

    本文由秀依林枫提供友情赞助,首发于烂泥行天下 公司服务器比较多,需要把apache源码包制作成rpm包,然后放到公司内网yum源上进行下载安装.apache的rpm包安装方式比源码安装方式比较快,这能 ...

  2. linux制作RPM包

    制作rpm包 1.制作流程1.1 前期工作 1)创建打包用的目录rpmbuild/{BUILD,SPECS,RPMS, SOURCES,SRPMS} 建议使用普通用户,在用户家目录中创建 2)确定好制 ...

  3. 简单了解如何自己动手制作RPM包

    导读 RPM文件在Linux系统中的安装最为简便.以著名的图像处理软件XV为例,其RPM包xv-3.10a-13.i386.rpm可以在该程序的主页中下载取得. 我们介绍如何自己动手制作RPM包.0, ...

  4. 制作rpm包步骤

    由于项目需要,需要自行制作rpm包.比较全面的可以参考如下链接: http://blog.chinaunix.net/uid-23069658-id-3944462.html 大致框架如下: 1,安装 ...

  5. 手动制作rpm包

    制作RPM包的过程,简单的说,就是为制作过程提供一个“工作车间”,即一个目录,里面需要包含以下几个子目录: BUILD        ————编译相关源码包时的工作目录: RPMS         — ...

  6. 速成制作rpm包

    FPM 由于很多软件在安装时需要编译,这会浪费不少的时间,为了提升部署效率,于是就想到制作rpm包.通常rpm包的制作是使用rpmbuild命令来制作,但是你需要知道它的语法,比较繁琐.这就用到了FP ...

  7. 利用fpm制作rpm包

    使用fpm制作rpm包 安装如下 [root@web01 ~]# yum install -y gcc zlib zlib-devel wget http://ruby.taobao.org/mirr ...

  8. Linux学习之RPM包管理-yum管理(十七)

    Linux学习之RPM包管理-yum管理 目录 IP地址配置 网络yum源 yum命令 光盘yum源搭建 IP地址配置 IP+子网掩码就可以在局域网(内网)使用. IP+子网掩码+网关+DNS就可以访 ...

  9. Linux学习之RPM包管理-rpm命令管理(十六)

    Linux学习之RPM包管理-rpm命令管理 目录 简介 RPM包依赖性 包全名与包名 rpm软件包安装 rpm软件包卸载 升级降级rpm软件包 rpm软件包的查询 rpm软件包校验 简介 RPM是R ...

  10. fpm制作rpm包

    一.前言 在企业中我们有事安装软件包.部分都是源码安装,如nginx安装路径都已经固化了,但实际业务中,我们都是把软件包安装到固定目录下,不满足需要,这是其一.其二,编译安装很耗时,比如mysql,特 ...

随机推荐

  1. Django自定义模板标签与过滤器

    title: Django自定义模板标签与过滤器 date: 2024/5/17 18:00:02 updated: 2024/5/17 18:00:02 categories: 后端开发 tags: ...

  2. MySQL所有的主从同步架构搭建方式

    目录 一.前言 二.关于MySQL主从同步 三.部署规划 3.1 服务器规划 3.2 数据库目录规划 四.准备工具 五.四台机器上使用通用二进制包安装MySQL(以node7为例) 5.1 上传MyS ...

  3. Linux运维面试总结

    1.Linux系统相关日志 /var/log/message:系统信息日志,包含错误信息 /var/log/secure:系统登录日志 /var/log/maillog:邮件日志 /var/log/c ...

  4. Python爬虫 | 批量爬取今日头条街拍美图

    01 前言 上篇文章我们爬取了今日头条街拍美图,心情相当愉悦,今天这篇文章我们使用Selenium来爬取当当网的畅销图书排行.正所谓书中自有黄金屋,书中自有颜如玉,我们通过读书学习来提高自身的才华,自 ...

  5. js 判断闰年

    首先,我们需要了解闰年的判断方式 1.能被4整除 2.并且不能被100整除 3.或者被400整除的 其次我们再来回顾下函数封装的知识,所谓的函数封装就是将一段函数封装成一个工具,有人用到了拿过来就可以 ...

  6. Windows10 LTSC版,比Win7还干净

    在Windows操作系统的发展历程中,每一个版本都承载着微软对用户需求的深度理解和技术创新.其中,Windows 7以其稳定.高效和简洁的特点,赢得了众多用户的喜爱. 然而,随着技术的不断进步和用户需 ...

  7. 记录nodejs做编辑和新增时候对数据库的操作

    server.js文件 const dao = require("../dao/user.dao"); saveDat是个对象自己处理一下 if (updataFlag) {//编 ...

  8. ABC330

    D 记录每一行,每一列有多少个 o,然后统计答案即可. code E 想到 \(mex^{i \le n}_{i = 1} a_i \le n\) 这整个题就可做了(赛时因为没想到这个,痛失 \(47 ...

  9. k8s配置文件管理

    1.为什么要用configMap ConfigMap是一种用于存储应用所需配置信息的资源类型,用于保存配置数据的键值对,可以用来保存单个属性,也可以用来保存配置文件. 通过ConfigMap可以方便的 ...

  10. 串口收发UART(Verilog HDL)

    UART(Universal Asynchronous Receiver Transmitter,通用异步收发器)是一种异步串行通信协议,主要用于计算机和嵌入式系统之间的数据交换. 实现UART通信的 ...