需求

之前发布、实施软件或者产品的时候,更多的是以脚本+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相关推荐

  1. Expo大作战(十八)--expo如何发布成独立应用程序,打包成apk或者ipa,发布到对应应用商店...

    简要:本系列文章讲会对expo进行全面的介绍,本人从2017年6月份接触expo以来,对expo的研究断断续续,一路走来将近10个月,废话不多说,接下来你看到内容,讲全部来与官网 我猜去全部机翻+个人 ...

  2. Linux入门——如何制作一个刷取网页访问量的脚本并打包成rpm软件包(CentOS)

    Linux入门之如何利用rpm命令创建完整的rpm文件 概述 rpm命令 rpm包制作流程 写目标脚本 rpm制作前的准备工作 软件准备 脚本编译 rpm软件包制作 概述 在Linux下进行脚本开发, ...

  3. Python 程序封装-打包成exe程序

    Python 程序封装-打包成exe程序 前言 一. Python 打包工具-Pyinstaller 二.打包具体过程 1. 打包成仅包含一个独立的exe程序 2. 打包成包含文件夹的程序,内有相关的 ...

  4. qt通过编写spec打包成rpm

    qt通过编写spec打包成rpm 一.将源文件打包成rpm安装包 1.新建名为rpmbuild的文件夹,里面包含子目录BUILD,RPMS,SOURCES,SPECS,SRPMS 命令: mkdir ...

  5. 内核源码包打包成rpm方式

    内核源码包打包成rpm方式 文章目录 内核源码包打包成rpm方式 第一部分,rpm包简单定制 一.rpm 制作前的环境准备 二.准备内核的源代码组件 1.下载地址 https://www.kernel ...

  6. 将源码包打包成RPM包

    RPM 1,描述信息 2,对源码安装后的数据压缩rpm 应用的场景 打包流程 安装rpm-build软件 #yum -y install rpm-build #rpmbuild -ba nginx.s ...

  7. Linux系统程序包管理工具 RPM

    什么是RPM: RPM全名是"RedHat Package Manager",简称为RPM,这套软件管理机制是由RedHat这家公司发展而来的.RPM是以一种数据库记录的方式来将你 ...

  8. Linux下程序包管理工具RPM

    实验环境: CentOS release 6.6 (Final)  一台 IP地址:172.16.249.230 RPM 是 Red Hat Package Manager 的缩写,本意是Red Ha ...

  9. Linux系统程序包管理工具-RPM

    一.rpm是什么 RPM 是RPM Package Manager(RPM软件包管理器)的缩写,这一文件格式名称虽然打上了RedHat的标志,但是其原始设计理念是开放式的.RPM包管理器(RPM)是一 ...

最新文章

  1. 基于 Ansj 的 elasticsearch 2.3.1 中文分词插件
  2. 网络推广软文之文章更新对网站排名的影响!
  3. 华为为什么能成全球第一?告诉你三个真相!
  4. FileUpload 控件 禁止手动输入
  5. java mvc 菜鸟_【java框架】SpringMVC(1)--SpringMVC入门
  6. HDU2476:String painter(区间dp)
  7. 0821Servlet基础
  8. 公有链、私有链、联盟链、许可链,这些区块链又分别代表着什么意思?
  9. java基础01-java历史
  10. 【MySQL学习】-- 0x04 通配符小结
  11. 利用zabbix自动发现监控mongo数据库
  12. UEditor手动调节其宽度
  13. 2019程序媛面试之高频题型汇总(二)
  14. CANoe下载地址以及CAN Demo 16的下载与激活,并附录所有CANoe软件版本
  15. 按网络管理模式 计算机网络可分为,计算机网络应用 按网络管理模式分类
  16. 千方百剂医药管理系统对接第三方WMS系统(天力士物流)
  17. CSS编写格式边框与渐变内容补充
  18. 中国自主潜航器AUV—潜龙号
  19. spoj COT COT2
  20. 电脑网线直连Linux服务器,网线直连线与交叉线之间的区别

热门文章

  1. STM32 WinUSB(WCID)免驱高速通信 20M/s(附详细测试)
  2. arch yaourt安装
  3. iherb中文海淘攻略-- IHERB目前的优惠
  4. u3d引擎移动都有哪些方法?又都适用于什么场景?
  5. 将iPhone的通讯录以拼音排序(转载文章)
  6. 图解Linux命令之--hwclock命令
  7. 构建城市三维信息模型(CIM)与数字孪生城市可视化技术 优锘ThingJS
  8. 关于Windows PE
  9. Testng执行顺序控制
  10. CSS实现实心三角形和空心三角形