使用 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,测试(找另一台原生的虚拟机测试):


最新文章

  1. ASP.NET MVC Model绑定(五)
  2. [转]Android静态变量的生命周期
  3. Android安装失败 Installation error code: -110
  4. bin和sbin的区别
  5. 李明杰视频 SVN
  6. [NodeJS] Deploy a Node Application with the Now CLI
  7. (转载)delphi文件流
  8. SCRUM团队的三个角色
  9. Java程序员应该知道的10个面向对象理论
  10. C# - 使用 List<> 泛型给GridView控件数据
  11. C# TabControl标签的隐藏
  12. Django的Form(二)
  13. input type="file"指定文件类型为excel
  14. bsp总结
  15. axis调用Web服务报axis unexpected wrapper element{XXXX}XXX错误的解决
  16. Rpc框架dubbo-server(v2.6.3) 源码阅读(一)
  17. 🌵react小记 🌵
  18. Codeforces 765F Souvenirs 线段树 + 主席树 (看题解)
  19. php代码画足球场
  20. 图论++【洛谷p1744】特价采购商品&&【一本通1342】最短路径问题

热门文章

  1. Django框架F查询与Q查询(全面了解)
  2. 使用.NET开发搭建OpenAI模型的中间服务端
  3. day04-Vue01
  4. 饮料换购【第六届蓝桥杯省赛C++A/C组,第六届蓝桥杯省赛JAVAB组】
  5. P8622 [蓝桥杯 2014 国 B] 生物芯片
  6. 在 NGINX 中根据用户真实 IP 进行限制
  7. Potree 003 基于Potree Desktop创建自定义工程
  8. 刺激,线程池的一个BUG直接把CPU干到100%了。
  9. DNS欺骗:网站克隆实现网站钓鱼攻击
  10. Python openpyxl使用教程