简单介绍RPM包制作方法

RPM是RedHat Package Manager(RedHat软件包管理工具)的缩写,是一种用于互联网下载包的打包及安装工具,它包含在某些Linux分发版中。它生成具有.RPM扩展名的文件。使用rpm安装软件和管理软件非常的方便。而这节我们不是介绍如何使用rpm安装或管理软件,而是如何把源码制作成rpm包。

下面我们以制作nginx的rpm开始介绍其制作方法。以下操作在centos-7进行。 制作nginx的rpm例子

建立目录结构

/usr/src/redhat/SOURCES — 存放源代码,补丁,图标等文件。

/usr/src/redhat/SPECS — 存放用于管理rpm制作进程的spec文件。
/usr/src/redhat/BUILD — 解压后的文件存放在这里。
/usr/src/redhat/RPMS — 存放由rpmbuild制作好的二进制包。
/usr/src/redhat/SRPMS —存放由rpmbuild制作好的源码包。
mkdir -p /usr/src/redhat
cd /usr/src/redhat
mkdir SOURCES SPECS BUILD RPMS SRPMS

下载源码包到SOURCES目录,不需要解压。

cd /usr/src/redhat/SOURCES
wget http://nginx.org/download/nginx-1.11.1.tar.gz

创建Spec文件

cd /usr/src/redhat/SPECS
vi nginx.spec
内容如下:
#
# Example spec file for nginx
#
Summary: high performance web server
Name: nginx
Version: 1.11.1
Release: 1.el7.ngx
License: 2-clause BSD-like license
Group: Applications/Server
Source: http://nginx.org/download/nginx-1.11.1.tar.gz
URL: http://nginx.org/
Distribution: Linux
Packager: geekwolf <admin@simlinuxc.om>;
%description
nginx [engine x] is a HTTP and reverse proxy server, as well as
a mail proxy server
%prep
rm -rf $RPM_BUILD_DIR/nginx-1.11.1
zcat $RPM_SOURCE_DIR/nginx-1.11.1.tar.gz | tar -xvf -
%build
cd nginx-1.11.1
./configure --prefix=/usr/local/nginx
make
%install
cd nginx-1.11.1
make install
%preun
if [ -z "`ps aux | grep nginx | grep -v grep`" ];then
killall nginx >/dev/null
exit 0
fi
%files
/usr/local/nginx

在制作RPM包之前需要安装必要的工具,如rpmbuild,gcc等。开始RPM制作

yum install gcc rpm-build pcre-devel
cd /usr/src/redhat/SPECS/
rpmbuild -bb nginx.spec
一切顺利的话,会生成nginx的rpm包,/usr/src/redhat/RPMS/i386/nginx-1.11.1-1.el7.ngx.x86_64.rpm。

测试rpm包

rpm -ivh /usr/src/redhat/RPMS/i386/nginx-1.11.1-1.el7.ngx.x86_64.rpm
spec文件解释
从以上的简单例子可以看出,制作rpm包最重要的还是spec文件,下面解释一下例子所用到的指令。
#:以#开头是注释,rpm会忽略它。
Summary:简单描述软件。
Name :定义rpm的名称。
Version: 定义软件版本
Release: 发行版本
License: 定义许可证
Group: 软件分类
Source: 源码下载地址
URL: 源码相关网站
Distribution: 发行版系列
Packager: 打包人的信息
%description:软件详细描述,可多行
%prep :软件编译之前的处理,如解压。
%build :开始编译软件,如make
%install :开始安装软件,如make install
%files :指定哪些文件需要被打包,如/usr/local/nginx
%preun :定义卸载之前的动作,如杀掉进程。
这里只介绍了几个常用的tag,更详细的请参考:http://www.rpm.org/max-rpm/ch-rpm-inside.html

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏DannyHoo的专栏

友盟推送使用别名(Alias)推送到具体用户

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010105969/article/details/...

2185
来自专栏分布式系统进阶

Kafka Manager实现原理与填坑

props.put("group.id", "KafkaManagerOffsetCache")这句说明不管启动了几个kafka manager, 消费"__c...

5022
来自专栏xcywt

Linux进程间通信之消息队列

  马上过年了,心里万般滋味。。。 一,消息队列 1,概念:“消息队列”是在消息的传输过程中保存消息的容器 2,消息队列就是一个消息的链表。可以把消息看作一个记...

1919
来自专栏玄魂工作室

kali linux Python 黑客编程1 开发环境

初始化 为什么要选择Python? Python作为目前Linux系统下最流行的编程语言之一,对于安全工作者的作用可以和C++相提并论。Python提供了丰富的...

4086
来自专栏惨绿少年

KICKSTART无人值守安装

1.1 环境说明 [root@test ~]# cat /etc/redhat-release CentOS release 6.9 (Final) [roo...

2340
来自专栏全华班

系统方案合集-RedHat安装WebLogic11g软件

导读 | RedHat安装WebLogic11g 一、安装JDK 切换到root用户,在安装盘server目录下执行 rpm -ivh java-1.6.0...

3857
来自专栏极客编程

node.js + mongodb 做项目的详解(二)

当然还是准备工作了,在bootstrap官网下载好需要的东西了,怎么用官网已经写的很详细,在这就不细说了。 下载地址:http://v3.bootcss.com...

902
来自专栏雪胖纸的玩蛇日常

django2+uwsgi+nginx上线部署到服务器Ubuntu16.04(最新最详细版)

2406
来自专栏云计算教程系列

Django入门:搭建你第一个应用

Django是用Python编写的免费开源Web框架,用了MVC的框架模式,即模型M,视图V和控制器C。它最初是被开发来用于管理劳伦斯出版集团旗下的一些以新闻内...

1352
来自专栏程序猿DD

Spring Boot中使用RabbitMQ

复刻一篇老文,为后续要发的内容做一些铺垫 Message Broker与AMQP简介 Message Broker是一种消息验证、传输、路由的架构模式,其设计目...

24610

扫码关注云+社区