Linux自己制作rpm包

linux,rpm · 浏览次数 : 25

正文

制作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包相似的内容:

Linux自己制作rpm包

制作rpm包 由源码包 >rpm包 安装制作rpm包工具包rpm-build 在制作过程中需要源码包和配置文件 rpmbuild制作rpm包的原理: 1、首先rpmbuild会先将源码包进行编译安装 2、再将编译安装好的文件打包为rpm包 # 安装rpm-build yum install -y r

[转帖]Bash脚本编程学习笔记04:测试命令test、状态返回值、位置参数和特殊变量

https://www.cnblogs.com/alongdidi/p/test_exitStatus_positionalAndSpecialParameter.html 我自己接触Linux主要是大学学习的Turbolinux --> 根据《鸟哥的Linux私房菜:基础篇》(第三版) --> 马

容器开发运维人员的 Linux 操作机配置优化建议

"工欲善其事必先利其器", 作为一个PAAS平台架构师, 容器相关技术(docker, k8s等)是必不可少的. 本文简单介绍下我自己的Linux操作机配置. 提升工作效率, 提高使用体验. :heart::heart::heart: :exclamation: 注意: 本文以CentOS 7.6

LAMP-CentOS7搭建Web服务器

搭建LAMP Web服务器 在家中翻到了以前用的老电脑,在思索一番后,决定把这台电脑改造成一台Web服务器,作为我自己搭建博客的测试机器。 一、Linux服务器 LAMP中的L指的是Linux服务器,其中Linux服务器的版本众多,如,CentOS、Ubuntu等Linux版本,我自己选择了Cent

[转帖]Bash脚本编程学习笔记04:测试命令test、状态返回值、位置参数和特殊变量

Bash脚本编程学习笔记04:测试命令test、状态返回值、位置参数和特殊变量 我自己接触Linux主要是大学学习的Turbolinux --> 根据《鸟哥的Linux私房菜:基础篇》(第三版) --> 马哥的就业班课程。给我的感觉是这些课程对于bash的讲解,理论上是不够的,但是限于时间、篇幅和精

[转帖]扩展Linux网络栈

https://www.cnblogs.com/charlieroro/p/14047183.html 感觉自己见识短浅了.. 来自Linux内核文档。之前看过这篇文章,一直好奇,问什么一条网络流会固定在一个CPU上进行处理,本文档可以解决这个疑问。为了更好地理解本文章中的功能,将这篇文章穿插入内。

[转帖] Linux命令拾遗-查看系统信息

https://www.cnblogs.com/codelogs/p/16060714.html 简介# 作为一名程序员,有时需要关注自己的进程运行在什么样的软硬件环境里,比如几核cpu、固态硬盘还是机械硬盘、内核版本多少、Centos还是Ubuntu? 查看硬件信息# Linux里面提供了一系列命

[转帖] Linux命令拾遗-查看系统信息

https://www.cnblogs.com/codelogs/p/16060714.html 简介# 作为一名程序员,有时需要关注自己的进程运行在什么样的软硬件环境里,比如几核cpu、固态硬盘还是机械硬盘、内核版本多少、Centos还是Ubuntu? 查看硬件信息# Linux里面提供了一系列命

Linux 文件系统(二) --- vfs简单分析

PS:要转载请注明出处,本人版权所有。 PS: 这个只是基于《我自己》的理解, 如果和你的原则及想法相冲突,请谅解,勿喷。 环境说明 无 前言 VFS(Virtual File System)是一种软件抽象,主要还是为了连接用户态、内核态和实际文件系统本身。例如:我们可以write一个字符串到磁盘e

Linux 文件系统之 --- ext4文件系统简介

PS:要转载请注明出处,本人版权所有。 PS: 这个只是基于《我自己》的理解, 如果和你的原则及想法相冲突,请谅解,勿喷。 环境说明 无 前言 在linux下面,常见的linux fs就是ext系列,linux里面的vfs也和这个ext fs息息相关。本文主要详解一下ext4 fs的实现原理,并且,