美文网首页工作生活
如何制作RPM包

如何制作RPM包

作者: 平解技术控 | 来源:发表于2019-07-02 22:57 被阅读0次

部署服务过程中经常获取代码,安装的需求,一般运维方法有写安装脚本,在将脚本和包远程cp到目标文件。因为有些繁琐的步骤,将需要安装的包,还有脚本打包成RPM包不失为一种高效简单的方法。目标机器只需要加入新的yum源,然后yum install就可以了。

目标机器加入新的yum源方法:

新yum源文件格式:test.repo

[test]

name=test - $basearch

baseurl=yum源的地址

enabled=1

gpgcheck=0

cp test.repo /etc/yum.epo/

下面来讲一下制作RPM包的方法:

首先,机器上需要安装必要的软件

yum install rpm-build

yum install rpmrebuild

yum install rpmdevtools

想要修改rpmbuild的默认路径,修改文件 /root/.rpmmacros

例如:

cat /root/.rpmmacros

%_topdir /data/rpmbuild

将rpmbuild路径修改到 /data/rpmbuild下面了。

运行命令,rpmdev-setuptree  在当前目录下生成rpmbuild 目录,rpmbuild目录就是编译用的目录。生成的目录结构为:

rpmbuild/

├── BUILD

├── RPMS

├── SOURCES

├── SPECS

└── SRPMS

一、生成  test.spec

将需要的步骤编辑   test.spec 文件 放到  rpmbuild/SPECS;

test.spec记录了变成rpm包的步骤,其中,test.spec包含以下几个步骤:

第一部分:变量定义

例如:

%global    test_dir /opt/test

这三个值分别对应: 

%变量属性  变量名  变量值

软件说明,例如Name,Version,Summary 总结

Source0: 需要用到的文件名 

Source关键字指定所有需要用到的文件

%description 描述

%prep 编译前的阶段,可以做一些解压包,创建用户等操作

%build 这个阶段为建立前的阶段, 如make等操作

%install

部署的关键步骤,安装包的阶段,如 make install

%clean

部署完成之后的清理步骤

%files

部署涉及到的文件,说明文档(doc),配置文件(config)及执行程序,还可定义文件存取权限,拥有者及组别。

%post

mkdir -p /var/log/supervisord

pip install -r ${RPM_BUILD_ROOT}requirements.txt

如果在安装完成之后,想要在目标机器上执行一系列操作,可以把shell命令放在 %post部分。例如以上,安装完成之后,pip 安装软件包。

%changelog

变更日志

%

写好test.spec是关键一步,里面有很多宏定义和写作规范,在制作的过程中,有自己的语法规则,比如文件 SOURCES 指定编号,后面执行这个文件的用途;

关键字介绍:

install命令,可以将文件copy到指定的目录下,并且指定文件的权限

install -m 640 %{SOURCE0}/agent/supervisord.conf ${RPM_BUILD_ROOT}/etc/

将%{SOURCE0}/agent/supervisord.conf  文件cp到 ${RPM_BUILD_ROOT}/etc/,cp之后的文件权限是640。

%setup

setup 安装之前对代码包操作,操作的对象是Source0,操作完之后,程序进入到目标目录

setup 可以带多个参数, 比如 

%setup -q  相当于对源文件的压缩包执行 tar -xof

%setup -u   对于Source0中带有参数的,可以做参数的替换

Name: cello

Source0: https://example.com/%{name}/release/hello-%{version}.tar.gz

%prep

%setup -n hello

其中 hello 和 cello 名字是不同的,这种情况下需要执行要压缩的文件名。

%setup -a and -b 

Source0: https://example.com/%{name}/release/%{name}-%{version}.tar.gz

Source1: examples.tar.gz

%prep

%setup -a 1

Source1 也是压缩包,在进入到工作目录之后,Source1也需要操作的时候。 -a after

相应的 %setup -b 1 是进入工作目录之前需要压缩的文件,-b before

需要的文件放到 rpmbuild/SOURCES 下面。

关于目录

首先要确定rpm包在目标机器的安装目录是什么?编译目录和安装目录的关系。

BUILDROOT 下面有关项目的目录是在什么时候创建的?

二、命令

spectool -g -R SPECS/test.spec

rpmbuild -bb SPECS/test.spec

可以看出命令执行过程,如果顺利执行完毕,会在 rpmbuild/RPMS 目录下面生成目标rpm包。


相关文章

  • 如何制作RPM包

    部署服务过程中经常获取代码,安装的需求,一般运维方法有写安装脚本,在将脚本和包远程cp到目标文件。因为有些繁琐的步...

  • 【com】基于RPM源码包制作RPM包

    基于RPM源码包制作RPM包(以heat为例) 一、下载源码包 yumdownloader --source op...

  • rpm包制作

    Linux 下RPM打包制作流程 开始前的准备 安装rpmbuild软件包 yum -y install rpm-...

  • RPM包制作

    在CentOS中验证了如下的RPM包制作流程。 1. 首先查看/usr/lib/rpm/macros中%_topd...

  • 制作RPM包

    前言 拥有源码,把源码制作RPM包进行安装和使用。 制作RPM包步骤 准备普通用户(rpmbuilduser)创建...

  • 制作 rpm 包

    一、安装和构建项目 安装 构建项目 二、spec 说明 rpmbuild 每个文件对应的宏 宏名称默认位置用途%{...

  • CentOS7安装升级openssh7.5p1之rpm包制作

    准备工作 下载源码包、创建rpm包制作所需相关的目录 开始rpm制作 1、检查本机openssh版本,查看yum源...

  • rpmbuild制作rpm 包

    安装rpmbuild 创建 rpm build 目录结构(可选) 在用户根目录生成rpmbuild 相关目录结构(...

  • fpm制作rpm包

    1、安装ruby 官网下载地址:下载 Ruby (ruby-lang.org)[http://www.ruby-l...

  • RPM 包是如何从源 RPM 制作的

    在上一篇文章中,我们研究了什么是 RPM 软件包。它们是包含文件和元数据的档案文件。当安装或卸载 RPM 时,此元...

网友评论

    本文标题:如何制作RPM包

    本文链接:https://www.haomeiwen.com/subject/csexhctx.html