使用 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,测试(找另一台原生的虚拟机测试):
最新文章
- ASP.NET MVC Model绑定(五)
- [转]Android静态变量的生命周期
- Android安装失败 Installation error code: -110
- bin和sbin的区别
- 李明杰视频 SVN
- [NodeJS] Deploy a Node Application with the Now CLI
- (转载)delphi文件流
- SCRUM团队的三个角色
- Java程序员应该知道的10个面向对象理论
- C# - 使用 List<;>; 泛型给GridView控件数据
- C# TabControl标签的隐藏
- Django的Form(二)
- input type=";file";指定文件类型为excel
- bsp总结
- axis调用Web服务报axis unexpected wrapper element{XXXX}XXX错误的解决
- Rpc框架dubbo-server(v2.6.3) 源码阅读(一)
- &#127797;react小记 &#127797;
- Codeforces 765F Souvenirs 线段树 + 主席树 (看题解)
- php代码画足球场
- 图论++【洛谷p1744】特价采购商品&;&;【一本通1342】最短路径问题
热门文章
- Django框架F查询与Q查询(全面了解)
- 使用.NET开发搭建OpenAI模型的中间服务端
- day04-Vue01
- 饮料换购【第六届蓝桥杯省赛C++A/C组,第六届蓝桥杯省赛JAVAB组】
- P8622 [蓝桥杯 2014 国 B] 生物芯片
- 在 NGINX 中根据用户真实 IP 进行限制
- Potree 003 基于Potree Desktop创建自定义工程
- 刺激,线程池的一个BUG直接把CPU干到100%了。
- DNS欺骗:网站克隆实现网站钓鱼攻击
- Python openpyxl使用教程