使用 FPM 将源码包转化为rpm包(技巧)
使用 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包(技巧)的更多相关文章
- [转帖]deb包转化为rpm包
deb包转化为rpm包 https://www.cnblogs.com/noxy/p/6371399.html 改天尝试一下之前经常遇到能下载deb包 下载不到rpm包的情况. deb文件格式本是ub ...
- 利用src.rpm包修改源码后重新制作rpm包
1. 下载 .src.rpm包.例:https://repos.fedorapeople.org/repos/openstack/EOL/openstack-grizzly/epel-6/openst ...
- deb包转化为rpm包
deb文件格式本是ubuntu的安装文件,那么我想要在fedora中安装,需要把deb格式转化成rpm格式,我们用skype举例: 1.下载转换工具alien_8.78.tar.gz 2.deb转化成 ...
- 将源码包制作成rpm包
Linux系统中一般安装软件有两种方法,源码安装和yum安装或者rpm包安装,由于光盘中的rpm包都是几年前制作成的,所以软件版本都很低,同时yum安装对软件的可定制性很低,所以为了使用最新的软件,一 ...
- fpm定制化RPM包之nginx rpm包的制作
fpm定制化RPM包之nginx rpm包的制作 1.安装ruby模块 # yum -y install ruby rubygems ruby-devel 2.添加阿里云的Rubygems仓库,国外资 ...
- CentOS使用yum源中自带的rpm包安装LAMP环境
CentOS使用yum源中自带的rpm包安装LAMP环境.这是Linux下安装LAMP的环境一种最基本最简便的方式.新手可以从容安装使用. 1. 安装基础包(可选安装)yum install -y w ...
- FPM打包工具 可以把源码包制定为rpm包 是自动化部署的环节
注意部FPM时的环境一定要跟生产环境的系统版本最好是保持一至,我第一次测试没通过,(我在CENTOS7和部属FPM打好的包在Centos6.x和安装,结果失败) 1:安装 FPM打包工具的依赖包: [ ...
- 源码包安装转换rpm包
目录 纯净版虚拟机 1. 先安装个虚拟机,登陆nginx官网 http://nginx.org/选择一个稳定的版本 2. 右键复制地址,到新克隆的纯净虚拟机wget 下载 3.源码包 4.解压 tar ...
- Spring IoC 源码分析 (基于注解) 之 包扫描
在上篇文章Spring IoC 源码分析 (基于注解) 一我们分析到,我们通过AnnotationConfigApplicationContext类传入一个包路径启动Spring之后,会首先初始化包扫 ...
- 庖丁解牛-----Live555源码彻底解密(RTP解包)
Live555 客户端解包 以testRTSPClient.cpp为例讲解: Medium<-MediaSource<-FramedSource<-RTPSource<-Mul ...
随机推荐
- 下载kali以及安装
一.kali下载 下载地址:https://www.kali.org/get-kali/#kali-virtual-machines 二.kali安装 1.打开VMware,打开文件,选择刚刚下载并解 ...
- 使用腾讯云部署war包
目录 1.前期准备 2.springboot打war包 3.部署war包 4.导入数据库 5.修改Tomcat启动端口 6.启动服务器 7.设置腾讯云服务器防火墙规则 8.从外部访问 9.总结 10. ...
- [编程基础] Python命令行解析库argparse学习笔记
Python argparse教程展示了如何使用argparse模块解析Python中的命令行参数. 文章目录 1 使用说明 1.1 Python argparse可选参数 1.2 Python ar ...
- [cocos2d-x]关于菜单项
菜单项的分类 MenuItem:菜单项类,它是一个虚基类,因此必须实现它的子类,再把子类对象赋给父类指针. MenuItemFont:字体菜单项. MenuItemAtlasFont:字体菜单项,和第 ...
- 使用阿里云产品搭建PHPWIND
2.4 安装PhpWind论坛网站 1. 本小节主要是在ECS云主机中快速安装PhpWind论坛网站的基础环境. 2. 远程登录到 PhpWind 主机服务器 ECS实例.请使用本实验 ...
- post方法易错地方
<body> <h1>登录</h1> <input type="text" placeholder="请输入用户名" ...
- 基于View接口
目录 基于View接口 1.写模型表以及数据库迁移 3.使用CBV写查询所有的视图接口 4.配路由 基于View接口 Django原生即继承View来实现写接口,的确过程很繁杂,很多东西都是手动写 ...
- Listen 1音乐播放器
Listen 1 Listen 1可以搜索和播放来自网易云音乐,QQ音乐,酷狗音乐,酷我音乐,Bilibili,咪咕音乐网站的歌曲,让你的曲库更全面.还支持歌单功能,你可以方便的播放,收藏和创建自己的 ...
- Solon2 开发之插件,二、插件扩展机制(Spi)
插件扩展机制,是基于 "插件" + "配置申明" 实现的解耦的扩展机制(类似 Spring Factories.Java Spi):简单.弹性.自由.它的核心作 ...
- 使用HtmlAgilityPack 爬取 国家统计局 区划和城乡划分代码
HtmlAgilityPack:Html解析神器,根据url地址解析html页面内容. 项目引用HtmlAgilityPack.dll文件或者通过安装 nuget 包 HtmlAgilityPack ...