使用 FPM  将源码包转化为rpm包

1、支持的源类型包

  • dir: 将目录打包成所需要的类型,可以用于源码编译安装的软件包
  • rpm: 对rpm进行转换
  • gem: 对rubygem包进行转换
  • python: 将Python模块打包成相应的类型
  • rpm: 转换为rpm包
  • deb: 转换为deb包
  • solaris: 转换为solaris包
  • puppet: 转换为puppet包

2,fpm 参数表

-s:指定源类型
-t:指定目标类型,即想要制作为什么包
-n:指定包的名字
-v:指定包的版本号
-C:指定打包的相对路径
-d:指定依赖于哪些包  (-d ',')
-f:第二次包时目录下如果有同名安装包存在,则覆盖它
-p:制作的rpm安装包存放路径,不想放在当前目录下就需要指定;
--post-install:软件包安装完成之后所要运行的脚本;同--offer-install(后指定一个脚本,脚本内容是源码包安装后一系列的启动操作)
--pre-install:软件包安装完成之前所要运行的脚本;同--before-install
--post-uninstall:软件包卸载完成之后所要运行的脚本;同--offer-remove
--pre-uninstall:软件包卸载完成之前所要运行的脚本;同—before-remove
--prefix:制作好的rpm包默认安装路径


3,举 例

使用fpm将jdk源码包做成一个rpm,方便快捷安装

准备:源码包:jdk-8u191-linux-x64.tar.gz (官网下载:https://www.oracle.com/java/technologies/javase-downloads.html

环境:Centos7 (内核:3.10.0-957.el7.x86_64)

1,安装扩展源
[root@localhost ~]# rpm -ivh epel-release-latest-7.noarch.rpm    
[root@localhost ~]# ls /etc/yum.repos.d/
[root@localhost ~]# yum clean all && yum makecache

===============================================================================================================

2,部署fpm安装环境
[root@localhost ~]# yum install -y ruby rubygems ruby-devel
[root@localhost ~]# gem update --system                                                         //升级rubygems版本
Updating rubygems-update
ERROR:  Error installing rubygems-update:
    rubygems-update requires Ruby version >= 2.3.0.
[root@localhost ~]# gem install rubygems-update -v 2.3.0
[root@localhost ~]# gem update --system
[root@localhost ~]# gem sources -a http://mirrors.aliyun.com/rubygems/     //添加国内源
[root@localhost ~]# gem sources --remove https://rubygems.org/               //移除国外源:
[root@localhost ~]# gem sources -l                                                               //查看当前源

===============================================================================================================

3,安装fpm包
[root@localhost ~]# gem install fpm                                                               //先默认下载,会提示版本不对,下载不成功
[root@localhost ~]# gem install fpm -v 1.4.0                                                  //指定版本下载,这里选择的是旧版本v1.4.0

===============================================================================================================
4,使用fpm命令打包做rpm
[root@localhost ~]# fpm -s dir -t rpm -n jdk -v 8u191-linux-x64  -f  --post-install /root/jdk/jdk.sh /usr/local/java       //具体参数参考上面 参数表

//其中/root/jdk/jdk.sh 是需要自己编写,如图:

另外需要注意:1,在使用fpm命令前,一定要将jdk源码包完全编译make解码安装好!fpm命令最后/usr/local/java 是jdk源码包解压后的位置;转化任何源码包,都需要此源码包已经安装完毕后,再使用fpm命令将其打包;2, jdk.sh和jdk-8u191-linux-x64.tar.gz源码包要在同一个目录下

===============================================================================================================

5,测试(找另一台原生的虚拟机测试):


使用 FPM 将源码包转化为rpm包(技巧)的更多相关文章

  1. [转帖]deb包转化为rpm包

    deb包转化为rpm包 https://www.cnblogs.com/noxy/p/6371399.html 改天尝试一下之前经常遇到能下载deb包 下载不到rpm包的情况. deb文件格式本是ub ...

  2. 利用src.rpm包修改源码后重新制作rpm包

    1. 下载 .src.rpm包.例:https://repos.fedorapeople.org/repos/openstack/EOL/openstack-grizzly/epel-6/openst ...

  3. deb包转化为rpm包

    deb文件格式本是ubuntu的安装文件,那么我想要在fedora中安装,需要把deb格式转化成rpm格式,我们用skype举例: 1.下载转换工具alien_8.78.tar.gz 2.deb转化成 ...

  4. 将源码包制作成rpm包

    Linux系统中一般安装软件有两种方法,源码安装和yum安装或者rpm包安装,由于光盘中的rpm包都是几年前制作成的,所以软件版本都很低,同时yum安装对软件的可定制性很低,所以为了使用最新的软件,一 ...

  5. fpm定制化RPM包之nginx rpm包的制作

    fpm定制化RPM包之nginx rpm包的制作 1.安装ruby模块 # yum -y install ruby rubygems ruby-devel 2.添加阿里云的Rubygems仓库,国外资 ...

  6. CentOS使用yum源中自带的rpm包安装LAMP环境

    CentOS使用yum源中自带的rpm包安装LAMP环境.这是Linux下安装LAMP的环境一种最基本最简便的方式.新手可以从容安装使用. 1. 安装基础包(可选安装)yum install -y w ...

  7. FPM打包工具 可以把源码包制定为rpm包 是自动化部署的环节

    注意部FPM时的环境一定要跟生产环境的系统版本最好是保持一至,我第一次测试没通过,(我在CENTOS7和部属FPM打好的包在Centos6.x和安装,结果失败) 1:安装 FPM打包工具的依赖包: [ ...

  8. 源码包安装转换rpm包

    目录 纯净版虚拟机 1. 先安装个虚拟机,登陆nginx官网 http://nginx.org/选择一个稳定的版本 2. 右键复制地址,到新克隆的纯净虚拟机wget 下载 3.源码包 4.解压 tar ...

  9. Spring IoC 源码分析 (基于注解) 之 包扫描

    在上篇文章Spring IoC 源码分析 (基于注解) 一我们分析到,我们通过AnnotationConfigApplicationContext类传入一个包路径启动Spring之后,会首先初始化包扫 ...

  10. 庖丁解牛-----Live555源码彻底解密(RTP解包)

    Live555 客户端解包 以testRTSPClient.cpp为例讲解: Medium<-MediaSource<-FramedSource<-RTPSource<-Mul ...

随机推荐

  1. AcWing342. 道路与航线

    原题链接 解题思路 这题用\(SPFA\)会被卡,所以我们不能用\(SPFA\) 但是观察数据我们可以发现对于道路,\(0≤C_i≤10^{5}\) 所以对于每个连通块(内部不存在航线),我们可以用\ ...

  2. golang在win10安装、环境配置 和 goland(IDE开发golang配置)

    前言 本人在使用goland软件开发go时,对于goland软件配置网上资料少,为了方便自己遗忘.也为了希望和我一样的小白能够更好的使用,所以就写下这篇博客,废话不多说开考. 一.查看自己电脑系统版本 ...

  3. [WPF]数据绑定失效的问题

    有可能的原因如下: 绑定的属性一定是属性而不能是字段,比如: public int data; 是无法生效的,而 public int data {get;set;} 这样才能生效

  4. DNS欺骗:网站克隆实现网站钓鱼攻击

    1 DNS 1.1 DNS是什么? 域名系统(Domain Name System)是互联网使用的命名系统,用来将主机域名转换为 ip 地址,属于应用层协议,使用 UDP 传输. 1.2 为什么需要D ...

  5. 代码小DEMO随笔---不经过后端接口,JS上传文件读取文件,展示到页面提供下载功能

    如果文件不大的话,我们可以不经过后端的接口,直接进行文件保存与展示下载~~ 目前,IE8.Firfox.Chrome.Opera浏览器都支持这种小文件嵌入. 好处:节省了一个HTTP 请求. 坏处:就 ...

  6. Java 进阶P-4.6+P-4.7

    向上造型 造型cast 子类的对象可以赋值给父类的变量 注意! java中不存在对象对对象的赋值!! 父类的对象不能赋值给子类的变量 可以用造型: c=(Car) v; (只有当v这个变量实际管理的是 ...

  7. Blazor入门100天 : 身份验证和授权 (2) - 角色/组件/特性/过程逻辑

    目录 建立默认带身份验证 Blazor 程序 `角色/组件/特性/过程逻辑 DB 改 Sqlite 将自定义字段添加到用户表 脚手架拉取IDS文件,本地化资源 freesql 生成实体类,freesq ...

  8. 车牌识别服务-JAVA+ONNX版本,支持全类型的车牌

    1.车牌识别简介 车牌识别分为车牌检测与识别,检测模型一般需要检查车牌的位置识别模型一般为识别车牌号及车牌的颜色类型等,目前有较多的深度学习模型能支持,这里就不详细说了. 自动识别车辆车牌信息,应用于 ...

  9. 百万级数据excel导出功能如何实现?

    前言 最近我做过一个MySQL百万级别数据的excel导出功能,已经正常上线使用了. 这个功能挺有意思的,里面需要注意的细节还真不少,现在拿出来跟大家分享一下,希望对你会有所帮助. 原始需求:用户在U ...

  10. FLASH-CH32F103替换STM32F103 FLASH快速编程移植说明

    因CH32F103 相对于STM32F103 flash 操作多了快速编程模式,该文档说明主要目的是为了方便客户在原先ST 工程的基础上实现flash 快速编程模式的快速移植. 1.在stm32f10 ...