第1章 rpm包的制作

1.1 fpm的概念介绍

FPM功能简单说就是将一种类型的包转换成另一种类型

1.1.1.支持的源类型

类型

说明

dir  

将目录打包成所需要的类型,可以用于源码编译安装的软件包

rpm  

对rpm进行转换

gem  

对rubygem包进行转换

python

将python模块打包成相应的类型

1.1.2 支持的目标类型包

类型

说明

rpm   

转换为rpm包

deb   

转换为deb包

solaris

转换为solaris包

puppet

转换为puppet模块

1.2 fpm的安装与使用

1.2.1 1.4.1 安装FPM工具

fpm是ruby写的,因此系统环境需要ruby,且ruby版本号大于1.8.5

1.2.1.1 安装环境ruby

[root@zabbix SOURCES] # yum -y install ruby rubygems ruby-devel

[root@zabbix SOURCES] # [root@test ~]# rpm -qa ruby rubygems ruby-devel

1.2.2 查看当前使用的ruby仓库

[root@zabbix SOURCES] # gem sources list

*** CURRENT SOURCES ***

https://rubygems.org/

1.2.2.1 由于是外国源,下载比较慢,所以更新为阿里云

[root@zabbix SOURCES] # gem sources -a http://mirrors.aliyun.com/rubygems/

1.2.3 安装fpm,gem从rubygem仓库安装软件类似yum从yum仓库安装软件。首先安装低版本的json,高版本的json需要ruby2.0以上,然后安装低版本的fpm,够用。

[root@zabbix SOURCES] # gem install json -v 1.8.3

[root@zabbix SOURCES] # gem install fpm -v 1.3.3

注意:如果是centos7,可以使用gem install fpm

1.3 fpm工具rpm包制作nginx服务(redis,php,mysql都是可以使用的)

1.3.1 下载安装包

[root@zabbix sbin] # wget http://nginx.org/download/nginx-1.16.1.tar.gz

1.3.2 下载nginx所需要的依赖软件

[root@zabbix SOURCES] # yum install -y pcre-devel openssl-devel

1.3.3 解压软件程序
进入到软件源码目录编译安装

[root@zabbix tools] # tar xf nginx-1.16.1.tar.gz

[root@zabbix tools] # cd nginx-1.16.1/

[root@zabbix nginx-1.16.1] # ./configure --prefix=/application/nginx-1.16.1 --with-http_ssl_module --with-http_stub_status_module

[root@zabbix nginx-1.16.1] # make && make install

[root@zabbix nginx-1.16.1] # ln -s /application/nginx-1.16.1 /application/nginx

1.3.4 编辑脚本文件

[root@zabbix scripts] # cat /server/scripts/nginx_post_install.sh

#!/bin/bash

useradd nginx -M -s /sbin/nologin

ln -s /application/nginx/sbin/* /usr/local/sbin/

ln -sf /application/nginx-1.16.1 /application/nginx

[root@zabbix scripts] #

1.3.5 制作rpm包

[root@zabbix scripts] # fpm -s dir -t rpm -n nginx -v 1.16.1 -d 'pcre-devel,openssl-devel' --post-install /server/scripts/nginx_post_install.sh -f /application/nginx-1.16.1/

1.3.5.1 fpm包制作的参数解析

参数

参数说明

-s

指定源类型

-t

指定目标类型,即想要制作为什么包

-n

指定包的名字

-v

指定包的版本号

-C

指定打包的相对路径

-d

指定依赖于哪些包

-f

第二次打包时目录下如果有同名安装包存在,则覆盖它

-p

输出的安装包的目录,不想放在当前目录下就需要指定

--post-install 

软件包安装完成之后所要运行的脚本;同--after-install

--pre-install  

软件包安装完成之前所要运行的脚本;同--before-install

--post-uninstall

软件包卸载完成之后所要运行的脚本;同--after-remove

--pre-uninstall

软件包卸载完成之前所要运行的脚本;同--before-remove

1.4 测试安装包是否正常

1.4.1 将安装包通过scp发送到其他服务器上

[root@zabbix scripts] # scp -r nginx-1.16.1-1.x86_64.rpm 172.16.1.51:/root/

1.4.2 在172.16.1.51服务器上开始安装使用

1.4.2.1 首先查看nginx发现版本是多少

[root@db ~] # nginx -V                    发现没有nginx服务

-bash: /usr/local/sbin/nginx: No such file or directory

[root@db ~] #

1.4.3 安装nginx

[root@db ~] # yum -y install nginx-1.16.1-1.x86_64.rpm

1.4.3.1 查看nginx服务是否正常

[root@db ~] # nginx -V

nginx version: nginx/1.16.1

built by gcc 4.8.5 20150623 (Red Hat 4.8.5-39) (GCC)

built with OpenSSL 1.0.2k-fips 26 Jan 2017

TLS SNI support enabled

configure arguments: --prefix=/application/nginx-1.16.1 --with-http_ssl_module --with-http_stub_status_module

1.4.3.2 nginx服务是否能正常打开

[root@db ~] # /application/nginx/sbin/nginx

[root@db ~] # ps -ef | grep nginx

root 6219 1 0 22:27 ? 00:00:00 nginx: master process /application/nginx/sbin/nginx

nobody 6220 6219 0 22:27 ? 00:00:00 nginx: worker process

root 6222 5047 0 22:27 pts/1 00:00:00 grep --color=auto nginx

1.4.3.3 web网站是否能打开

1.5 rpm包的查看

[root@db ~] # rpm2cpio nginx-1.16.1-1.x86_64.rpm | cpio -div

./application/nginx-1.16.1/conf/fastcgi.conf

./application/nginx-1.16.1/conf/fastcgi.conf.default

./application/nginx-1.16.1/conf/fastcgi_params

./application/nginx-1.16.1/conf/fastcgi_params.default

./application/nginx-1.16.1/conf/koi-utf

./application/nginx-1.16.1/conf/koi-win

./application/nginx-1.16.1/conf/mime.types

./application/nginx-1.16.1/conf/mime.types.default

./application/nginx-1.16.1/conf/nginx.conf

./application/nginx-1.16.1/conf/nginx.conf.default

./application/nginx-1.16.1/conf/scgi_params

./application/nginx-1.16.1/conf/scgi_params.default

./application/nginx-1.16.1/conf/uwsgi_params

./application/nginx-1.16.1/conf/uwsgi_params.default

./application/nginx-1.16.1/conf/win-utf

./application/nginx-1.16.1/html/50x.html

./application/nginx-1.16.1/html/index.html

./application/nginx-1.16.1/logs

./application/nginx-1.16.1/sbin/nginx

11643 blocks

fpm工具来制作rpm包软件的更多相关文章

  1. fpm制作rpm包

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

  2. 利用fpm制作rpm包

    使用fpm制作rpm包 安装如下 [root@web01 ~]# yum install -y gcc zlib zlib-devel wget http://ruby.taobao.org/mirr ...

  3. fpm 制作rpm包

    使用fpm命令制作rpm包并安装 工作中有如下情况需要将文件打包rpm: 避免重复工作,将源码程序打包为rpm 使用yum发布项目,项目打包为rpm 将自己写好的程序打包为rpm,提供给用户下载 其他 ...

  4. linux制作RPM包

    制作rpm包 1.制作流程1.1 前期工作 1)创建打包用的目录rpmbuild/{BUILD,SPECS,RPMS, SOURCES,SRPMS} 建议使用普通用户,在用户家目录中创建 2)确定好制 ...

  5. 制作RPM包

    RPM包制作过程 1.1 前期工作 1)创建打包用的目录rpmbuild/{BUILD,SPECS,RPMS, SOURCES,SRPMS} 建议使用普通用户,在用户家目录中创建 2)确定好制作的对象 ...

  6. 烂泥:Linux源码包制作RPM包之Apache

    本文由秀依林枫提供友情赞助,首发于烂泥行天下 公司服务器比较多,需要把apache源码包制作成rpm包,然后放到公司内网yum源上进行下载安装.apache的rpm包安装方式比源码安装方式比较快,这能 ...

  7. 手动制作rpm包

    制作RPM包的过程,简单的说,就是为制作过程提供一个“工作车间”,即一个目录,里面需要包含以下几个子目录: BUILD        ————编译相关源码包时的工作目录: RPMS         — ...

  8. 速成制作rpm包

    FPM 由于很多软件在安装时需要编译,这会浪费不少的时间,为了提升部署效率,于是就想到制作rpm包.通常rpm包的制作是使用rpmbuild命令来制作,但是你需要知道它的语法,比较繁琐.这就用到了FP ...

  9. centos6上使用fpm打python2.7 rpm包并兼容python2.6

    centos6上使用fpm打python2.7 rpm包并兼容python2.6 作者 运维小兵_加油 关注 2016.09.22 00:28 字数 501 阅读 45评论 0喜欢 1 工作中我们常常 ...

随机推荐

  1. 浅析Redis基础数据结构

    Redis是一种内存数据库,所以可以很方便的直接基于内存中的数据结构,对外提供众多的接口,而这些接口实际上就是对不同的数据结构进行操作的算法,首先redis本身是一种key-value的数据库,对于v ...

  2. springmvc对前台参数的接收

    一.基本数据类型的接收 代码: @RequestMapping("/selectRegion") public BaseResult<?> method(String ...

  3. spring-boot-learning-RabbitMQ

    为什么需要MQ??? 异步处理: 场景: 用户注册后,需要发注册邮件和注册短信,传统的做法有两种 1.串行的方式 2.并行的方式` 用户注册-发送注册邮箱-发送注册短信都完成之后才结束返回给客户端 邮 ...

  4. java-jdbc-all

    jdbc相关解析 JDBC(Java DataBase Connectivity,Java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语 ...

  5. 用 wait-notify 写一段代码来解决生产者-消费者问题?

    只要记住在同步块中调用 wait() 和 notify()方法,如 果阻塞,通过循环来测试等待条件.

  6. SpringAop实现原理及代理模式

    Spring Aop的原理 Spring的AOP就是通过动态代理实现的.当为某个Bean或者某些Bean配置切面时,Spring会为其创建代理对象,当调用该对象的某个方法时,实际是调用生成的代理类的对 ...

  7. python学习笔记(十)——进程间通信

    python 在进程间通信时有很多方式,比如使用Queue的消息队列,使用 pip的管道通信,share memory 共享内存或 semaphore 信号量等通信方式. 这里我们演示一下通过消息队列 ...

  8. 对Flex布局的总结与思考

    阅读本文之前最好对flex布局有基本了解,可以通过"参考资料"中列举的资源来学习. flex布局规范的设计目标 一维布局模型(one-dimensional layout mode ...

  9. [译] 沙箱中的间谍 - 可行的 JavaScript 高速缓存区攻击

    原文 The Spy in the Sandbox – Practical Cache Attacks in Javascript 相关论文可在 https://github.com/wyvernno ...

  10. ES6-11学习笔记--类与继承

    ES5 中的类与继承: 类的定义: function People(name, age) { // this指向当前实例化对象 console.log(this); // 实例属性 this.name ...