首页 > 系统相关 >Linux自己制作rpm包

Linux自己制作rpm包

时间:2024-07-16 21:30:52浏览次数:14  
标签:nginx root rpmbuild 源码 build rpm Linux 制作

制作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 /

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

标签:nginx,root,rpmbuild,源码,build,rpm,Linux,制作
From: https://www.cnblogs.com/xuruizhao/p/18306154

相关文章

  • Linux 【disk】磁盘管理
    Linux磁盘管理好坏直接关系到整个系统的性能问题。Linux磁盘管理常用三个命令为df、du和fdiskdf:diskfree:列出文件系统的整体磁盘使用量du:diskused:检查磁盘空间使用量fdisk:用于磁盘分区磁盘管理磁盘分区-->格式化(获得文件系统)-->挂载磁盘的分类:SCSI硬盘......
  • Linux 【systemctl 】服务管理器
    1.start/stop#启动一个服务并在后台运行它systemctlstart[service]#停止当前正在运行的服务systemctlstop[service]#停止正在运行的服务,然后重新启动它systemctlrestart[service]#-------------------------------#示例:开启sshd服务systemctlstartsshd#示例:......
  • Linux基础命令
    1.pwd查看当前所在目录(用处:拷贝目录到一些配置文件)2.cd切换目录(需要到特定的目录执行命令),用法:cd目录名:进入指定目录绝对路径,相对路径./当前../上一级cd..:退回上一级cd~:切到用户home目录3.tab补全文件名或者命令4.ls/ll=ls-al查看目录文件信息ls......
  • 基于Linux的Flappy bird游戏开发
    gitee源码获取链接:一、项目功能按下空格键小鸟上升,不按空格键小鸟下降。搭建小鸟需要穿过的管道。管道自动左移和创建。小鸟与管道碰撞游戏结束。二、知识储备C语言。数据结构——链表。Ncurses库。信号机制。三、项目框图四、Ncurses库问题引入?如何显示游戏界......
  • Linux命令行指令大全(Ⅰ)
    前言:     首先,我们需要明白为什么要掌握linux命令行指令。因为在日常生活中我们最为熟悉的还是windows操作系统和IOS操作系统,所以为了能对Linux操作系统可以更方便的使用,所以我们需要掌握相关的指令来让开发的过程更加便捷。    此外在本文中像ls,cd,pwd这几个......
  • Linux安装mongodb
    1.安装包下载wgethttps://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-4.0.27.tgz2.安装和启动2.1解压tar-zxvfmongodb-linux-x86_64-rhel70-4.0.27.tgz2.2将解压后的目录移动到/usr/local目录下,并改名为mongodbmvmongodb-linux-x86_64-rhel7......
  • 选择Maya进行3D动画制作与渲染的理由
    如果你对3D动画充满热情并追求成为专业3D动画师的梦想,你一定听说过Maya——近年来3D动画的行业标准。Maya被3D艺术家广泛使用,你是否想知道为什么Maya总是他们的首选?下面一起来了解下。一、什么是Maya?由Autodesk开发的Maya是一款专业的3D软件,用于创建逼真的角色和大片级别的特效......
  • Linux的top命令参数详解
    简介top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器。top显示系统当前的进程和其他状况,是一个动态显示过程,即可以通过用户按键来不断刷新当前状态.如果在前台执行该命令,它将独占前台,直到用户终止该程序为止.比较准......
  • Linux 配置gitlab步骤
    最近在玩gitlab,记录一下配置gitlab的过程一、安装gitlab相关的依赖环境   (1) yuminstall-ycurlpolicycoreutilsopenssh-serveropenssh-clientspostfixpolicycoreutils-pythoncronie           (2) 启动Postfix        systemct......
  • Linux中的一些基础命令用法
    1.文件的时间的概念创建时间修改时间访问时间使用stat命令获取文件的时间信息[root@tdr~]#stat/opt/d.txt 文件:"/opt/d.txt" 大小:0       块:0     IO块:4096 普通空文件设备:fd00h/64768d   Inode:33868148  硬链接:1权限:(06......