简单的将linux二进制程序、资源打包成rpm
需求
之前发布、实施软件或者产品的时候,更多的是以脚本+tar压缩包的形式,或者直接集成一个ELF程序来进行发布。
现在想简单的把可执行程序、依赖动态度和资源打到一个rpm包中,通过rpm -ivh方式进行安装。
过程
该打包过程只是记录了一下将二进制放入rpm中的过程和注意事项,不涉及预编译、编译和安装等繁琐的过程。
1、程序准备
虚拟机上得有rpmbuild程序,没有的话yum或者apt-get安装一下,例如yum -y install rpmbuild。
2、目录准备
需要一个打包目录,该目录需要在执行rpmbuild的用户的家目录有一个rpmbuild目录,目录里面应该包含BUILD、BUILDROOT、SPECS、RPMS和SRPMS等目录,可以使用rpmdev-setuptree等程序自动生成,也可以自己去建上,要是用的root用户,就在/root/rpmbuild目录下把这些目录建好即可。
3、编写spec文件
在SPECS目录中,创建并编写一个**.spec文件,名字无所谓,格式如下
Summary: test package.
Name: Test
Version: 1.0
Release: 200
License: GPL
Group: test
AutoReqProv: no%description
test process rpm.%prep
%build
%install%files
/usr/bin/test
/usr/share/doc/test.txt
/etc/test.conf
/usr/lib/libtest.so
我现在有三个资源,一个test程序需要在安装之后放到/usr/bin目录,test.txt文档需要放到/usr/share/doc目录,而test.conf配置文件需要放入/etc目录,libtest.so放入/usr/lib。%files中的文件在rpm -e卸载的时候也会直接给清理掉。
4、放置资源
放入资源的时候需要根据编写的spec文件来放置,在BUILDROOT目录要先创建一个目录Test-1.0-200.x86_64,该目录是根据spec文件中配置拼接而成:Name-Version-Release.arch。
然后在Test-1.0-200.x86_64中创建目录usr/bin,usr/share/doc,/usr/lib和etc,然后将test、test.txt、libtest.so和test.conf放到各自的目录。
5、打包
进入SPECS目录,执行 rpmbuild -bb **.spec 命令,就可以在RPMS目录中生成相应的rpm包了。
注意
1、打包完成之后,执行rpm -ivh安装的时候报了依赖 ld-linux-x86-64.so.2找不到
由于之前电脑上的一些库做过升级,可能没有找到对应的库,有个简单粗暴的解决方法就是在打包的时候忽略依赖。
比如上述spec文件中加入:AutoReqProv: no
这样打包之后在安装rpm的时候,就会自动忽略依赖关系,基本等同于rpm -ivh ** --nodeps
2、安装的时候libtest.so动态库文件释放报错
具体错误信息:error: unpacking of archive failed on file cpio: Digest mismatch
一般是优化导致,可以使用prelink -u libtest.so,去掉优化,然后重新打包。
简单的将linux二进制程序、资源打包成rpm相关推荐
- Expo大作战(十八)--expo如何发布成独立应用程序,打包成apk或者ipa,发布到对应应用商店...
简要:本系列文章讲会对expo进行全面的介绍,本人从2017年6月份接触expo以来,对expo的研究断断续续,一路走来将近10个月,废话不多说,接下来你看到内容,讲全部来与官网 我猜去全部机翻+个人 ...
- Linux入门——如何制作一个刷取网页访问量的脚本并打包成rpm软件包(CentOS)
Linux入门之如何利用rpm命令创建完整的rpm文件 概述 rpm命令 rpm包制作流程 写目标脚本 rpm制作前的准备工作 软件准备 脚本编译 rpm软件包制作 概述 在Linux下进行脚本开发, ...
- Python 程序封装-打包成exe程序
Python 程序封装-打包成exe程序 前言 一. Python 打包工具-Pyinstaller 二.打包具体过程 1. 打包成仅包含一个独立的exe程序 2. 打包成包含文件夹的程序,内有相关的 ...
- qt通过编写spec打包成rpm
qt通过编写spec打包成rpm 一.将源文件打包成rpm安装包 1.新建名为rpmbuild的文件夹,里面包含子目录BUILD,RPMS,SOURCES,SPECS,SRPMS 命令: mkdir ...
- 内核源码包打包成rpm方式
内核源码包打包成rpm方式 文章目录 内核源码包打包成rpm方式 第一部分,rpm包简单定制 一.rpm 制作前的环境准备 二.准备内核的源代码组件 1.下载地址 https://www.kernel ...
- 将源码包打包成RPM包
RPM 1,描述信息 2,对源码安装后的数据压缩rpm 应用的场景 打包流程 安装rpm-build软件 #yum -y install rpm-build #rpmbuild -ba nginx.s ...
- Linux系统程序包管理工具 RPM
什么是RPM: RPM全名是"RedHat Package Manager",简称为RPM,这套软件管理机制是由RedHat这家公司发展而来的.RPM是以一种数据库记录的方式来将你 ...
- Linux下程序包管理工具RPM
实验环境: CentOS release 6.6 (Final) 一台 IP地址:172.16.249.230 RPM 是 Red Hat Package Manager 的缩写,本意是Red Ha ...
- Linux系统程序包管理工具-RPM
一.rpm是什么 RPM 是RPM Package Manager(RPM软件包管理器)的缩写,这一文件格式名称虽然打上了RedHat的标志,但是其原始设计理念是开放式的.RPM包管理器(RPM)是一 ...
最新文章
- 基于 Ansj 的 elasticsearch 2.3.1 中文分词插件
- 网络推广软文之文章更新对网站排名的影响!
- 华为为什么能成全球第一?告诉你三个真相!
- FileUpload 控件 禁止手动输入
- java mvc 菜鸟_【java框架】SpringMVC(1)--SpringMVC入门
- HDU2476:String painter(区间dp)
- 0821Servlet基础
- 公有链、私有链、联盟链、许可链,这些区块链又分别代表着什么意思?
- java基础01-java历史
- 【MySQL学习】-- 0x04 通配符小结
- 利用zabbix自动发现监控mongo数据库
- UEditor手动调节其宽度
- 2019程序媛面试之高频题型汇总(二)
- CANoe下载地址以及CAN Demo 16的下载与激活,并附录所有CANoe软件版本
- 按网络管理模式 计算机网络可分为,计算机网络应用 按网络管理模式分类
- 千方百剂医药管理系统对接第三方WMS系统(天力士物流)
- CSS编写格式边框与渐变内容补充
- 中国自主潜航器AUV—潜龙号
- spoj COT COT2
- 电脑网线直连Linux服务器,网线直连线与交叉线之间的区别