rpm打包

news2024/11/19 2:20:12

文章目录

  • rpm打包
    • 1. rpm打包步骤
      • 0)安装打包工具rpm-build和rpmdevtools
      • 1)创建初始化目录
      • 2)准备打包内容
      • 3)编写打包脚本 spec文件
      • 4)打包
      • 5)安装

rpm打包

1. rpm打包步骤

0)安装打包工具rpm-build和rpmdevtools

yum install rpm-build -y
yum install rpmdevtools -y

[释]: 打包主要用rpm-build,而rpmdevtools工具包里面自带的命令rpmdev-setuptree可以用于快速创建结构目录,比手动创建更快。
[注]: 如果yum下载不了,可参考我的另一篇博文 https://blog.csdn.net/Acegem/article/details/132555841?spm=1001.2014.3001.5501

1)创建初始化目录

首先要在当前用户的 {$HOME} 下创建目录:rpmbuild,再在该目录下创建目录:BUILD、RPMS、SOURCES、SPECS、SRPMS
整个过程可以借助 rpmdev-setuptree 快速实现。如下:

cd # 到主目录下
rpmdev-setuptree # 创建初始化目录

结果:
在这里插入图片描述
[注]: 默认创建位置是 {$HOME},如果想更改位置,可修改 ~/.rpmmacros 配置。配置默认初始内容:

在这里插入图片描述

2)准备打包内容

将要打包的内容放到 ~/rpmbuild/SOURCES 目录下。
例:
在这里插入图片描述

3)编写打包脚本 spec文件

cd ~/rpmbuild/SPECS
touch mytool.spec

mytool.spec 内容如下:

Name: mytool   # 软件名称
Version: 1.0   # 软件版本
Release: 0%{?dist}   # RPM版本,发布序列号,用来标明第几次打包
Summary: MyTool Master installer    # 描述
# Group: test    # 软件组。建议使用 Application/System
License: GPLv3+   # 协议
AutoReqProv: no  # 忽略依赖。简单粗暴,依个人习惯。
# 例:有时rpm -ivh安装时报错某依赖找不到,可能是打包的时候就找不到依赖包。这个语句可以使得忽略依赖关系。功能类似于:rpm -ivh 软件名 --nodeps

BuildRoot: %(mktemp -ud %{_tempath}/%{name}-%{version}-%{release}-XXXXXX)    # 临时编译目录

# 详细描述
%description -l zh_CN
"The mytool for test"

# 安装前准备
%prep
echo "do not"

# 安装
%install
cd %{_sourcedir}    # ~/rpmbuild/SOURCE
cp -ra * %{buildroot}  # 将 ~/rpmbuild/SOURCE 下的内容全都复制到 ~/rpmbuild/BUILDROOT

# 定义打包文件列表
%files
/usr/local/MQ
/opt/QQ

# 卸载后执行的指令
%postun
rm -rf /usr/local/MQ
rm -rf /opt/QQ

附:
spec常用参数

# 自定义宏
%define Name MyTool
%define Version 1.0

# 软件包
Name: %{Name}  # 引用宏
Version: %{Version}  # 引用宏
Release: 1%{?dist}  # 引用宏(自带宏)
Summary: 一段软件简概  # 简单描述
License:  GPLv3+  # 协议
URL: 地址
buildroot: %{_topdir}/BUILDROOT  # 生成车间,即编译根目录。
Source0: %{Name}-%{Version}.tar.gz  # 指定源码编译的文件,默认路径:%{_topdir}/SOURCES
SOURCE1:  支持多个
BuildRequires: gcc, make, automake, binutils  # 软件依赖信息
Requires: bash >=2.0  # 软件依赖, >= 或 <= 表大于或小于特定版本

# 详细描述
%description -l zh_CN   # 其中 -l zh_CN是参数,可省略
这是一段软件的详细描述

# 安装前。如:执行脚本
%pre
useradd %{Name} -s /sbin/nologin

# 安装前。默认将Source目录内源码包解压到BUILD目录,并在其目录下创建 %{Name}-%{Version}目录。
%prep
%setup -q -n %{Name}-%{Version}

# 编译
%build
自定义命令

# 安装
%install
自定义命令

# 文件
%files

# 清理制作时产生的缓存
%clean
rm -rf %{buildroot}

# 安装后。
%post
自定义命令

# 卸载前。
%preun
自定义命令

# 卸载后
%postun
自定义命令

# 日志
%changelog
自定义命令

代表路径的宏列表

%{_sysconfdir}        /etc
%{_prefix}            /usr
%{_exec_prefix}       %{_prefix}
%{_bindir}            %{_exec_prefix}/bin
%{_libdir}            %{_exec_prefix}/%{_lib}
%{_libexecdir}        %{_exec_prefix}/libexec
%{_sbindir}           %{_exec_prefix}/sbin
%{_sharedstatedir}    /var/lib
%{_datarootdir}       %{_prefix}/share
%{_datadir}           %{_datarootdir}
%{_includedir}        %{_prefix}/include
%{_infodir}           /usr/share/info
%{_mandir}            /usr/share/man
%{_localstatedir}     /var
%{_initddir}          %{_sysconfdir}/rc.d/init.d
%{_var}               /var
%{_tmppath}           %{_var}/tmp
%{_usr}               /usr
%{_usrsrc}            %{_usr}/src
%{_lib}               lib (lib64 on 64bit multilib systems)
%{_docdir}            %{_datadir}/doc
%{buildroot}          %{_buildrootdir}/%{name}-%{version}-%{release}.%{_arch}
$RPM_BUILD_ROOT       %{buildroot}

4)打包

cd ~/rpmbuild/SPECS/
rpmbuild -bb mytool.spec

未报错的日志结尾会出现 exit 0,具体信息如下:
在这里插入图片描述此时,会在 ~/rpmbuild/RPMS/ 目录下生成 rpm 包文件。如下:
在这里插入图片描述
注: 可输入

rpm -qpl mytool-1.0-0.ky10.ky10.x86_64.rpm

来查看rpm包的内容:
在这里插入图片描述
说明包是没问题的。

5)安装

rpm -ivh mytool-1.0-0.ky10.ky10.x86_64.rpm

在这里插入图片描述

可看到rpm包中的MQ和QQ被成功安装在了 /usr/local 和 /opt 下。
在这里插入图片描述
附:

# 查找软件的安装路径
rpm -ql 软件名
# 查找软件的相关信息
rpm -qi 软件名

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/955994.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

python把txt变成list,并且写入xslx文件

需求&#xff1a; 1、把txt文件的内容变成list 2、然后写入excel中 txt文件内容 IP.txt 192.168.199.201,4C8G,200G 192.168.199.202,4C8G,200G 192.168.199.203,4C8G,200G 192.168.199.204,4C8G,200G 192.168.199.205,4C8G,200G192.168.199.206,4C8G,200G 192.168.199.207…

2023年7月京东笔记本电脑行业品牌销售排行榜(京东数据平台)

随着智能手机、平板电脑等移动互联设备的普及&#xff0c;人们对于个人电脑的依赖减轻&#xff0c;加之电脑的更换率较低&#xff0c;因此当前PC端消费市场整体出现疲态&#xff0c;笔记本电脑的出货量不断下降&#xff0c;今年7月份也同样呈现这一趋势。 根据鲸参谋电商数据分…

不使用 ERP有3个隐藏业务风险,一定要知道!

不少中小型企业出于种种原因&#xff0c;推迟了对ERP系统的投资。也许是因为没有一大笔钱购买软件&#xff1b;也许是听说实施项目可能需要几个月甚至几年的时间&#xff0c;而企业没有时间去做这种令人头疼的事情。 因此&#xff0c;中小企业并没有转向ERP系统&#xff0c;而…

运维Shell脚本小试牛刀(四): 多层嵌套if...elif...elif....else fi

运维Shell脚本小试牛刀(一) 运维Shell脚本小试牛刀(二) 运维Shell脚本小试牛刀(三)::$(cd $(dirname $0)&#xff1b; pwd)命令详解 运维Shell脚本小试牛刀(四): 多层嵌套if...elif...elif....else fi_蜗牛杨哥的博客-CSDN博客 一&#xff1a; if...elif...elif..else fi多层…

软件测试—测试用例的设计

软件测试—测试用例的设计 测试用例是什么&#xff1f; 首先&#xff0c;测试用例&#xff08;Test Case&#xff09;是为了实施测试而向被测试系统提供的一组集合。这组集合包括&#xff1a;测试环境、操作步骤、测试数据、预期结果等要素。 好的测试用例的特征 一个好的测试…

ChatGPT 总结数据分析的所有知识点

ChatGPT功能非常多,特别是对某个行业,某个方向,某个技术进行总结那是相当专业的。 如下图。 直接用一个指令便总结出来数据分析当中的所有知识点内容。 AIGC ChatGPT ,BI商业智能, 可视化Tableau, PowerBI, FineReport, 数据库Mysql Oracle, Office, Python ,ETL Ex…

【python爬虫案例】用python爬豆瓣读书TOP250排行榜!

文章目录 一、爬虫对象-豆瓣读书TOP250二、python爬虫代码讲解三、讲解视频四、完整源码 一、爬虫对象-豆瓣读书TOP250 您好&#xff0c;我是 马哥python说 &#xff0c;一名10年程序猿。 今天我们分享一期python爬虫案例讲解。爬取对象是&#xff0c;豆瓣读书TOP250排行榜数…

2023-08-31 LeetCode每日一题(一个图中连通三元组的最小度数)

2023-08-31每日一题 一、题目编号 1761. 一个图中连通三元组的最小度数二、题目链接 点击跳转到题目位置 三、题目描述 给你一个无向图&#xff0c;整数 n 表示图中节点的数目&#xff0c;edges 数组表示图中的边&#xff0c;其中 edges[i] [ui, vi] &#xff0c;表示 ui…

暴力递归转动态规划(三)

前两篇暴力递归转动态规划的文章中&#xff0c;都是通过从上到下的一种思路来解决的问题&#xff0c;这篇文章会通过数组从左向右遍历的方式&#xff0c;来将暴力递归转成动态规划。 题目 有两个等长的数组 w[] 和 v[]&#xff0c;w[i] 和 v[i] 分别表示 i 号物品的重量和价值…

全球十大安全好用的黄金交易app软件最新排名(综合评测)

随着金融市场的不断发展&#xff0c;黄金交易app软件日益成为投资者不可或缺的工具。然而&#xff0c;面对众多的黄金交易软件&#xff0c;投资者往往感到困惑和难以抉择。本文将根据最新排名&#xff0c;对全球十大安全好用的黄金交易软件进行综合评测&#xff0c;帮助投资者找…

记一次Zip Slip任意文件写漏洞 以及一些参考文章

记一次Zip Slip任意文件写漏洞以及参考文章们 记一次Zip Slip任意文件写漏洞漏洞复现漏洞原理分析扩展延申 参考文章一&#xff1a;Java之解压流&#xff08;ZipInputStream&#xff09;参考文章二&#xff1a;Zip Slip VulnerabilityExploitable Application FlowAre you Vuln…

13.10 语义分割 全卷积网络

语义分割是对图像的每个像素分类 全卷积网络采用卷积神经网络实现从图像像素到像素类别的转换&#xff0c;全卷积网络将中间层特征的高和宽转换回输入图像的尺寸&#xff08;引入转置卷积实现的&#xff09;。 最终的类别预测与输入图像在像素上一一对应。 全卷积网络模型模型…

day 31 面向对象 成员方法

class 类名称&#xff1a; 类的属类(定义在类中的变量&#xff0c;成员变量) 类的行为(定义在类中的函数&#xff0c;成员方法) # 设计一个类&#xff08;类比生活中&#xff1a;设计一张等级表&#xff09; class Student:name Nonegender Nonenatio…

农产品小程序商城搭建宝典

在当今的电子商务时代&#xff0c;农产品小程序商城已经成为了一种新型的电商模式&#xff0c;为许多农产品的生产和销售带来了新的机遇。但是&#xff0c;如何搭建一个功能完善、用户体验优秀的农产品小程序商城呢&#xff1f;下面&#xff0c;我们就来探讨一下。 首先&#x…

抖音电商店铺运营教程,新手开店常见问题解答,醒醒团队分享

我是王路飞。 做抖音小店不可避免会遇到一些问题&#xff0c;尤其是新手&#xff0c;之前没接触过电商&#xff0c;更别说在抖音做电商开店了。 以至于很多新手在抖音开的店铺&#xff0c;类型不太对&#xff0c;类目不太对&#xff0c;不清楚怎么操作和运营&#xff0c;哪哪…

Redis一主一从Docker方式部署通过keepalived和 sentinel哨兵模式实现高可用

有两台服务器一台是主&#xff0c;master : 172.24.69.180 另外一台是从&#xff0c; slave :172.24.69.181 vip 地址&#xff1a; 172.24.69.185 1、关闭防火墙 两台服务器都关闭防火墙 systemctl disable --now firewalld firewall-cmd --state关闭SELinux setenforce 0 …

audio 标签

<audio>标签是HTML5中用于嵌入音频内容的元素。它提供了一种简单的方式来在网页上播放音频文件。 以下是<audio>标签的基本用法&#xff1a; <audio src"路径/到/音频文件.mp3" controls></audio>在上面的示例中&#xff0c;src属性指定了…

Briefings in Bioinformatics投稿经验分享

期刊名: BRIEFINGS IN BIOINFORMATICS期刊名缩写:BRIEF BIOINFORM期刊ISSN:1467-5463E-ISSN:1477-40542023年影响因子/JCR分区:9.5/Q1latex模板:http://static.primary.prod.gcms.the-infra.com/static/site/journals/document/oup-authoring-template.zip?node=7987de4…

langchain介绍之-Prompt

LangChain 是一个基于语言模型开发应用程序的框架。它使得应用程序具备以下特点&#xff1a;1.数据感知&#xff1a;将语言模型与其他数据源连接起来。2.代理性&#xff1a;允许语言模型与其环境进行交互 LangChain 的主要价值在于&#xff1a;组件&#xff1a;用于处理语言模型…

网络编程 day 5

1、根据select TCP服务器流程图编写服务器 #include <myhead.h>#define ERR_MSG(msg) do{\fprintf(stderr, "__%d__:", __LINE__); \perror(msg);\ }while(0)#define PORT 8888 //端口号&#xff0c;范围1024~49151 #define IP "192.168.…