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

1:安装 FPM打包工具的依赖包:

[root@DB apps]# yum install gcc* rpm-build

2:源码安装ruby

https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.4.tar.bz2
在安装Ruby之前先安装openssl源码

修改Makefile:增加 CFLAG -fPIC,如:CFLAG= -fPIC -DOPENSSL

如下:

    修改之前:
CFLAG= -O
DEPFLAG= -DOPENSSL_NO_EC_NISTP_64_GCC_128 -DOPENSSL_NO_GMP -DOPENSSL_NO_JPAKE -DOPENSSL_NO_LIBUNBOUND -DOPENSSL_NO_MD2 -DOPENSSL_NO_RC5 -DOPENSSL_NO_RFC3779 -DOPENSSL_NO_SCTP -DOPENSSL_NO_SSL_TRACE -DOPENSSL_NO_SSL2 -DOPENSSL_NO_STORE -DOPENSSL_NO_UNIT_TEST -DOPENSSL_NO_WEAK_SSL_CIPHERS
修改之后
CFLAG= -fPIC
DEPFLAG= -DOPENSSL_NO_EC_NISTP_64_GCC_128 -DOPENSSL_NO_GMP -DOPENSSL_NO_JPAKE -DOPENSSL_NO_LIBUNBOUND -DOPENSSL_NO_MD2 -DOPENSSL_NO_RC5 -DOPENSSL_NO_RFC3779 -DOPENSSL_NO_SCTP -DOPENSSL_NO_SSL_TRACE -DOPENSSL_NO_SSL2 -DOPENSSL_NO_STORE -DOPENSSL_NO_UNIT_TEST -DOPENSSL_NO_WEAK_SSL_CIPHERS
查看目录:
[root@DB openssl-1.0.2j]# pwd
/data/ok/openssl-1.0.2j
[root@DB openssl-1.0.2j]# vim Makefile
修改后就可以编译和安装了!!!

[root@DB openssl-1.0.2j]# ./config --prefix=/data/apps/openssl-1.0.2j
[root@DB openssl-1.0.2j]# make && make install
增加openssl的lib目录到系统里并生效
[root@DB openssl-1.0.2j]# echo '/data/apps/openssl-1.0.2j/lib/'>>/etc/ld.so.conf.d/server.conf
[root@DB openssl-1.0.2j]# ldconfig

增加openssl的bin目录到系统里并生效

[root@DB openssl-1.0.2j]# echo 'export PATH=/data/apps/openssl-1.0.2j/bin/:${PATH}'>>/etc/profile
[root@DB openssl-1.0.2j]# source /etc/profile

接下来源码安装:RUBY

[root@DB ruby-2.3.4]# ./configure --prefix=/data/apps/ruby-2.3.4 --with-openssl-dir=/data/apps/openssl-1.0.2j/ssl
[root@DB ruby-2.3.4]# make && make installecho 'export PATH=/data/apps/ruby-2.3.4/bin/:${PATH}' >>/etc/profile
source /etc/profile

# 添加淘宝的Rubygems仓库,外国的源慢,移除原生的Ruby仓库

[root@DB ~]# gem sources --add https://ruby.taobao.org/ --remove https://rubygems.org/
source https://ruby.taobao.org/ already present in the cache
https://rubygems.org/ removed from sources
[root@DB ~]# gem sources list
*** CURRENT SOURCES ***https://ruby.taobao.org/

首先安装低版本的json,高版本的json需要ruby2.0以上,然后安装低版本的fpm,够用。

[root@DB ~]# gem install json -v 1.8.3
Fetching: json-1.8.3.gem (100%)
Building native extensions.  This could take a while...
Successfully installed json-1.8.3
Parsing documentation for json-1.8.3
Installing ri documentation for json-1.8.3
Done installing documentation for json after 1 seconds
1 gem installed
[root@DB ~]# gem install fpm -v 1.3.3
Fetching: ffi-1.9.18.gem (100%)
Building native extensions.  This could take a while...
Successfully installed ffi-1.9.18
Fetching: clamp-0.6.5.gem (100%)
Successfully installed clamp-0.6.5
Fetching: childprocess-0.7.1.gem (100%)
Successfully installed childprocess-0.7.1
Fetching: cabin-0.9.0.gem (100%)
Successfully installed cabin-0.9.0
Fetching: backports-3.8.0.gem (100%)
Successfully installed backports-3.8.0
Fetching: arr-pm-0.0.10.gem (100%)
Successfully installed arr-pm-0.0.10
Fetching: fpm-1.3.3.gem (100%)
Successfully installed fpm-1.3.3
Parsing documentation for ffi-1.9.18
Installing ri documentation for ffi-1.9.18
Parsing documentation for clamp-0.6.5
Installing ri documentation for clamp-0.6.5
Parsing documentation for childprocess-0.7.1
Installing ri documentation for childprocess-0.7.1
Parsing documentation for cabin-0.9.0
Installing ri documentation for cabin-0.9.0
Parsing documentation for backports-3.8.0
Installing ri documentation for backports-3.8.0
Parsing documentation for arr-pm-0.0.10
Installing ri documentation for arr-pm-0.0.10
Parsing documentation for fpm-1.3.3
Done installing documentation for ffi, clamp, childprocess, cabin, backports, arr-pm, fpm after 15 seconds
7 gems installed

# 上面的2步安装仅适合CentOS6系统,CentOS7系统一步搞定,即gem install fpm

制做RPM包的流程是:

先源码安装软件包,然后写脚本,然后通过FPM接合脚本完RPM包的制做:

下面以TENGINE为例:

在TENGINE以源码的方法安装成功后为前题:

查看却本:

[root@DB scripts]# cat tengine_rpm.sh
#!/bin/bash
useradd www -M -s /sbin/nologin
ln -s /data/apps/tengine-2.1.0 /data/apps/tengine

下面就开始制做RPM包了:

[root@DB scripts]# fpm -s dir -t rpm -n tengine -v 2.1.0 -d 'gcc gcc-c++ autoconf automake' --post-install /data/scripts/tengine_rpm.sh -f /data/apps/tengine-2.1.0
no value for epoch is set, defaulting to nil {:level=>:warn}
no value for epoch is set, defaulting to nil {:level=>:warn}
Created package {:path=>"tengine-2.1.0-1.x86_64.rpm"}

查看生成的RPM包:

[root@DB scripts]# ls
tengine-2.1.0-1.x86_64.rpm  tengine_rpm.sh

经过测试生成的RPM包可以成功安装!!!!

转载于:https://www.cnblogs.com/bass6/p/7089841.html

FPM打包工具 可以把源码包制定为rpm包 是自动化部署的环节相关推荐

  1. 使用FPM打包工具打rpm包

    使用FPM打包工具打rpm包 一:安装ruby环境和gem命令 fpm 是 ruby写的,因此系统环境需要ruby且版本必须大于1.8.5# yum -y install ruby rubygems ...

  2. 详解linux下auto工具制作Makefile源码包(制作篇)

    2019独角兽企业重金招聘Python工程师标准>>> 详解linux下auto工具制作Makefile源码包(制作篇) 水木杨 一.     概述 为了更好的制作configure ...

  3. tengine php fpm,FPM打包工具制作Tengine为RPM包详解

    目录 1.Tengine编译安装 2.FPM制作Tengine为RPM包 3.总结 1.Tengine编译安装[root@php ~]# cat /etc/issue CentOS release 6 ...

  4. 【Linux软件管理】FPM打包工具

    FPM打包工具 1. FPM简介 1.1. 支持的源类型包 1.2. 支持的目标类型包 2. FPM的安装 2.1. 安装ruby和gem 2.2. 修改ruby源 2.3. 安装FPM工具 2.4. ...

  5. 【java】本地客户端内嵌浏览器3 - Swing 使用 Spring 框架 + 打包项目 + 转exe + 源码

    目录 ★☆★ 写在前面 ★☆★ ★☆★ 本系列文章 ★☆★ ★☆★ 开源网址 ★☆★ 一.给 Swing 加上 Spring 0.前期努力 I. SpringBoot II. SpringMVC 1. ...

  6. 封装成jar包_通用源码阅读指导mybatis源码详解:io包

    io包 io包即输入/输出包,负责完成 MyBatis中与输入/输出相关的操作. 说到输入/输出,首先想到的就是对磁盘文件的读写.在 MyBatis的工作中,与磁盘文件的交互主要是对 xml配置文件的 ...

  7. 【小程序源码】云开发表情包制作神器微信小程序源码下载,支持各种自定义

    该款小程序是一个表情包制作 内容毕竟丰富,另外自定义制作方面也是特别的自由 支持自主上传图片,自定义文章,另外拥有多种素材模板以供选择 这是一款云开发的小程序,但是安装还是挺简单的 搭建教程: 首先使 ...

  8. 小程序源码:云开发表情包制作神器-多玩法安装简单

    该款小程序是一个表情包制作 内容毕竟丰富,另外自定义制作方面也是特别的自由 支持自主上传图片,自定义文章,另外拥有多种素材模板以供选择 这是一款云开发的小程序,但是安装还是挺简单的 搭建教程: 首先使 ...

  9. 小程序源码:好玩的表情包机器人

    这是一款和表情包有关的一款机器人小程序 界面就相当于是聊天界面,然后是你和AI的界面 打开小程序后会自动全网推送几个表情包给你 然后你可以点击下方的说你还要然后又会随机发给你 当然你也可以输入关键词然 ...

  10. 小程序源码:云开发表情包制作神器微信小程序

    该款小程序是一个表情包制作 内容毕竟丰富,另外自定义制作方面也是特别的自由 支持自主上传图片,自定义文章,另外拥有多种素材模板以供选择 这是一款云开发的小程序,但是安装还是挺简单的 搭建教程: 首先使 ...

最新文章

  1. Linux 配置IP地址,子网,网关,DNS,linux远程, wget 下载工具
  2. Android 屏幕截图
  3. GTK+重拾--08 GTK+中的对话框
  4. Java集合框架:Set(HashSet,LinkedHashSet,TreeSet)
  5. code vs 代码格式化排版_23行代码,教你用python实现百度翻译!(建议收藏)
  6. 商城购物车php代码,php实现商城购物车的思路和源码分析
  7. 三思笔记_在使用buildconfig调试之前要三思
  8. 最适合Java程序员的Java学习全套资料分享
  9. [强化学习实战]深度Q学习-DQN算法原理
  10. 扬州市 工程师职称计算机考试,扬州市建筑专业工程师专业技术资格条件
  11. 低压电力线宽带载波通信互联互通技术规范第4-2部分:数据链路层通信协议
  12. ps图层高级扩展知识
  13. ArcGIS API For JavaScript 利用GP服务生成等值线、等值面(二)之生成等值面
  14. 【C1认证任务】C1-4
  15. 骆昊python100天 github_GitHub - zsfz/Python-100-Days: Python - 100天从新手到大师
  16. 女友闹别扭不用担心,这个撩妹黑科技轻松哄好
  17. python爬取微博数据词云_爬虫篇:使用Python动态爬取某大V微博,再用词云分析...
  18. oracle备份数据库dmp定时,SCO Unix系统下定时备份Oracle数据库dmp文件的设置
  19. 第2章 蓝牙降噪耳机测试维度
  20. Archlinux双显卡安装NVIDIA闭源驱动

热门文章

  1. php逻辑分析,PHP – 字符串逻辑分析 – “X和Y或Z”
  2. python3扫描_Python3实现TCP端口扫描器
  3. 2022年 微信大数据挑战赛
  4. hashmap浅析-get方法
  5. java双向链表结构_【Java数据结构】2.3双向链表的迭代实现
  6. 项目介绍star原理_TiDB-Wasm 原理与实现 | Hackathon 优秀项目介绍
  7. CentOS下启动mysql出现“MySQL Daemon failed to start”解决办法
  8. 一次慢查询暴露的隐蔽的问题
  9. springboot2.x 集成百度 uidgenerator
  10. Ubuntu16.x服务器 安装 Java,Elasticsearch5.4.X,中文分词,同义词,Logstash5.4.X 日志搜集