FPM制作Nginx的rpm软件包

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

-------------------------------------------------------------------------------

一、搭建epel源

-------------------------------------------------------------------------------

[root@localhost yum.repos.d]# rz                            #上传163镜像源在线yum
[root@localhost yum.repos.d]# ls
a  CentOS7-Base-163.repo

[root@localhost yum.repos.d]# rz                            #上传epel源

[root@localhost yum.repos.d]# ls

a

epel-release-latest-7.noarch.rpm

CentOS7-Base-163.repo

[root@localhost yum.repos.d]# rpm -ivh epel-release-latest-7.noarch.rpm            #安装epel源

[root@localhost yum.repos.d]# ls 
a

CentOS7-Base-163.repo

epel-release-latest-7.noarch.rpm

epel-testing.repo
 epel.repo

[root@localhost yum.repos.d]# yum -y clean all              #清除缓存
[root@localhost yum.repos.d]# yum makecache             #重建yum缓存

Cannot retrieve metalink for repository: epel/x86_64. Please verify its path and try again 报错
[root@localhost yum.repos.d]# vim epel.repo                     #修改epel文件
将所有baseurl 开启
将所有 metalink 注释掉

[root@localhost yum.repos.d]# yum -y clean all              #再次清除缓存
[root@localhost yum.repos.d]# yum makecache            #再次重建缓存成功

--------------------------------------------------------------------------

二、安装ruby环境和gem命令FPM

--------------------------------------------------------------------------

[root@localhost yum.repos.d]# yum   -y   install   ruby  rubygems  ruby-devel
[root@localhost ~]#  gem update --system                             #升级rubygems版本
Updating rubygems-update
Fetching: rubygems-update-3.0.6.gem (100%)
ERROR:  Error installing rubygems-update:
 rubygems-update requires Ruby version >= 2.3.0.
ERROR:  While executing gem ... (NoMethodError)
    undefined method `version' for nil:NilClass
#升级失败提示我们升级到2.3.0版本
[root@localhost ~]#  gem install rubygems-update  -v  2.3.0       #升级到2.3.0版本
Updating rubygems-update
Fetching: rubygems-update-3.0.6.gem (100%)
ERROR:  Error installing rubygems-update:
 rubygems-update requires Ruby version >= 2.3.0.
ERROR:  While executing gem ... (NoMethodError)
    undefined method `version' for nil:NilClass
[root@localhost ~]#  gem install rubygems-update -v 2.3.0
Fetching: rubygems-update-2.3.0.gem (100%)
Successfully installed rubygems-update-2.3.0
Parsing documentation for rubygems-update-2.3.0
Installing ri documentation for rubygems-update-2.3.0
1 gem installed
[root@localhost ~]#  gem update --system                     #在升级rubygems版本
RubyGems system software updated
--------------------------------------------------------------------------------------------
[root@localhost ~]# gem sources -a http://mirrors.aliyun.com/rubygems/          #添加国内源
source http://mirrors.aliyun.com/rubygems/ already present in the cache
[root@localhost ~]# gem sources --remove https://rubygems.org/               #删除国外源(因为国外源下载较为缓慢,所以需要国内源的帮助)
https://rubygems.org/ removed from sources
[root@localhost ~]#  gem sources -l                       #查看源
*** CURRENT SOURCES *** 
http://mirrors.aliyun.com/rubygems/
[root@localhost ~]# gem install fpm               #安装fpm软件
Installing ri documentation for fpm-1.11.0
14 gems installed
---------------------------------------------------------------
[root@localhost ~]# vim nginx.sh
#!/bin/bash
useradd -M -s /sbin/nologin nginx
ln -s /usr/local/nginx/sbin/nginx /sbin/
echo www.crushlinux.com > /usr/local/nginx/html/index.html                     #将自己想要添加的内容写入到Nginx的网页
nginx
-----------------------------------------------------------
[root@localhost ~]# fpm -s dir -t rpm -n nginx -v 1.10.2 -d 'pcre-devel,zlib-devel' -f  --post-install /root/nginx.sh /usr/local/nginx              #生成rpm包
Need executable 'rpmbuild' to convert dir to rpm {:level=>:error}               #出现这个报错,需要安装rpm-build的安装包
[root@localhost ~]# yum -y install rpm-build  #安装
#生成rpm包
[root@localhost ~]# fpm -s dir -t rpm -n nginx -v 1.10.2 -d 'pcre-devel,zlib-devel' -f  --post-install /root/nginx.sh /usr/local/nginx
Created package {:path=>"nginx-1.10.2-1.x86_64.rpm"}
[root@localhost ~]# ls
=  anaconda-ks.cfg  nginx-1.10.2-1.x86_64.rpm  nginx.sh
进行安装测试之前如果你之前安装过nginx的话需要将之前的Nginx删除干净
[root@localhost ~]# rm -rf /usr/local/nginx
[root@localhost ~]# rm -rf /usr/src/nginx
[root@localhost ~]# rm -rf /usr/local/bin/nginx                #做过软连接的话需要删除软连接
[root@localhost ~]#killall -9 nginx                                    #杀死Nginx进程
[root@localhost ~]#  userdel -r nginx                                 #删除Nginx的测试用户
[root@localhost ~]# rpm -ivh nginx-1.10.2-1.x86_64.rpm                       #安装Nginx进行测试
Preparing...                          ################################# [100%]
Updating / installing...
   1:nginx-1.10.2-1                   ################################# [100%]
warning: %post(nginx-1.10.2-1.x86_64) scriptlet failed, exit status 1
成功

FPM制作Nginx的RPM软件包的更多相关文章

  1. 二十三.Subversion基本操作、使用Subversion协同工作、制作nginx的RPM包

    1.Subversion基本操作 web1 1.1 安装Subversion服务器 ]# yum -y install subversion 1.1.1 创建版本库 ]# mkdir /var/svn ...

  2. 高级运维(七):Subversion基本操作、使用Subversion协同工作、制作nginx的RPM包

    一.Subversion基本操作 目标: 本案例要求先快速搭建好一台Subversion服务器,并测试该版本控制软件: 1> 创建版本库    2> 导入初始化数据    3> 检出 ...

  3. 基于FPM制作nginx RPM包

    目录 环境 配置 FPM安装 环境 系统 其它 CentOS 7.5 需提前配置好epel 配置 [root@localhost ~]# yum clean all && yum ma ...

  4. 使用rpm-build制作nginx的rpm包

    2014-11-27 11:05:49   一.RPM包的分类 RPM有五种基本的操作功能:安装.卸载.升级.查询和验证. linux软件包分为两大类: (1)二进制类包,包括rpm安装包(一般分为i ...

  5. 制作nginx的rpm包出现问题

    在学习打包rpm,找到了个不错的参考站点  https://src.fedoraproject.org/cgit/rpms/ 过程: git clone -b el6 git://pkgs.fedor ...

  6. fpm制作rpm包

    一.前言 在企业中我们有事安装软件包.部分都是源码安装,如nginx安装路径都已经固化了,但实际业务中,我们都是把软件包安装到固定目录下,不满足需要,这是其一.其二,编译安装很耗时,比如mysql,特 ...

  7. Linux基于FPM制作RPM包(以Nginx为例)

    1.搭建Epel  Yum源  安装在线yum源 [root@localhost ~]# rpm -ivh epel-release-latest-.noarch.rpm //安装扩展源 [root@ ...

  8. 基于FPM制作RPM软件包!

    工作中有如下情况需要将文件打包rpm: 避免重复工作,将源码程序打包为rpm 使用yum发布项目,项目打包为rpm 将自己写好的程序打包为rpm,提供给用户下载 其他 以前打包rpm是一个非常复杂的一 ...

  9. fpm 制作 rpm 包

    支持的 源类型包 ① dir : 将目录打包成所需要的类型, 可用于源码编译安装软件包 ② rpm : 对 rpm 包进行转换 ③ gem : 对 rubygem 包进行转换 ④ python : 将 ...

随机推荐

  1. MySQL手工注入进阶篇——突破过滤危险字符问题

    当我们在进行手工注入时,有时候会发现咱们构造的危险字符被过滤了,接下来,我就教大家如何解决这个问题.下面是我的实战过程.这里使用的是墨者学院的在线靶场.咱们直接开始. 第一步,判断注入点. 通过测试发 ...

  2. stm32:实现呼吸灯

    1.main.c #include "sys.h" #include "delay.h" #include "key.h" #define ...

  3. Pointer Lock API(1/3):Pointer Lock 的总体认识

    前言 指针锁定(Pointer Lock),以前也叫鼠标锁定,提供了基于鼠标随时间的移动(如deltaΔ)的输入方法,不仅仅是视窗区域鼠标的绝对位置.指针锁定让你能够访问原始的鼠标移动,将鼠标事件的目 ...

  4. ThinkPHP5中raw的作用

    在tp5中,我们一般在模板中输出变量是这样的:{$test} 但是有时候在有些源码中我们可以看到这样的方式:{$test|raw} 这个时候如果你去找手册会发现,全文基本没有提到这个raw的作用. 那 ...

  5. 武汉加油!(Python版)

    #武汉加油!import turtle as tt.pensize(20)t.pencolor("blue")t.setup(1700, 600) t.penup()#-t.got ...

  6. 多线程高并发编程(3) -- ReentrantLock源码分析AQS

    背景: AbstractQueuedSynchronizer(AQS) public abstract class AbstractQueuedSynchronizer extends Abstrac ...

  7. 测量C++程序运行时间

    有个很奇怪的现象,我自认为写得好的文章阅读量只有一百多,随手写的却有一千多--要么是胡搞,要么是比较浅显.纵观博客园里众多阅读过万的文章,若非绝世之作,则必为介绍入门级知识的短文.为了让我的十八线博客 ...

  8. vueThink框架搭建与填坑(new)

    自己跟着官网搭建vueThink框架,发现github上文档有很多坑.所以总结一下(仅针对WIN端下载使用) 1.安装node.js 前端部分是基于node.js上运行的,所以必须先安装node.js ...

  9. 数论-质因数(gcd) UVa 10791 - Minimum Sum LCM

    https://vjudge.net/problem/UVA-10791/origin 以上为题目来源Google翻译得到的题意: 一组整数的LCM(最小公倍数)定义为最小数,即 该集合的所有整数的倍 ...

  10. matlab计算相对功率

    1.对脑电数据进行db4四层分解,因为脑电频率是在0-64HZ,分层后如图所示, 细节分量[d1 d2 d3 d4] 近似分量[a4] 重建细节分量和近似分量,然后计算对应频段得相对功率谱,重建出来得 ...