第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. Ubuntu- 彻底干净卸载MySQL、Apache2、Php的方法

    一.卸载删除 mysql 1 sudo apt-get autoremove --purge mysql-server-5.0 2 sudo apt-get remove mysql-server 3 ...

  2. Windows 8下完美使用Virtual PC 2007(virtual pc 2007 64 win8 兼容性)

    Windows 8下完美使用Virtual PC 2007(virtual pc 2007 64 win8 兼容性) 一.从微软的官方网站下载Virtual PC 2007 SP1英文版,文件名为se ...

  3. Linux 安装mysql 看这一篇就够了

    mysql 安装教程 下载地址:https://downloads.mysql.com 查看系统中默认的mysql 依赖 rpm -qa | grep mysql rpm -qa | grep mar ...

  4. ioctl以及read阻塞型引发的思考

    1. 尝试strace 或 jstack 去追踪程序,发现某一个进程作为socket连接server出现如下的log(strace追踪): 1. ioctl(45,[0],0) = 0 2. .... ...

  5. Java如何使用实时流式计算处理?

    我是3y,一年CRUD经验用十年的markdown程序员‍常年被誉为职业八股文选手 最近如果拉过austin项目代码的同学,可能就会发现多了一个austin-stream模块.其实并不会意外,因为这一 ...

  6. Mybatis 的一级、二级缓存?

    1)一级缓存: 基于 PerpetualCache 的 HashMap 本地缓存,其存储作用域为 Session,当 Session flush 或 close 之后,该 Session 中的所有 C ...

  7. Java 死锁以及如何避免?

    Java 中的死锁是一种编程情况,其中两个或多个线程被永久阻塞,Java 死锁情况 出现至少两个线程和两个或更多资源. Java 发生死锁的根本原因是:在申请锁时发生了交叉闭环申请.

  8. Django获取请求的IP地址

    if request.META.get('HTTP_X_FORWARDED_FOR'): ip = request.META.get("HTTP_X_FORWARDED_FOR") ...

  9. resin服务之一---安装及部署

    参考网站: http://caucho.com/ http://www.oschina.net/p/resin http://caucho.com/resin-4.0/admin/starting-r ...

  10. MyBatis Plus 2.3 个人笔记-01-代码生成器

    sb_mybatis_puls2.3 <?xml version="1.0" encoding="UTF-8"?> <project xmln ...