第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. RDMA相关的技术网站

    https://www.cnblogs.com/vlhn/p/7909893.html https://www.cnblogs.com/vlhn/ 这个家伙的博客写的还不错,可以参考.

  2. QT designer的安装与汉化(pycharm)

    QT designer的安装 1.安装好Python3的环境 添加环境变量,保证安装正确, 2.安装PyQt5 采用命令安装,Win+R,输入CMD,打开命令框,输入以下命令.后面是豆瓣的镜像地址,是 ...

  3. 数据类型 Java day7

    数据类型 数据类型包含:引用数据类型和基本数据类型 引用数据类型:出去基本数据类型,其他的类型,如String 基本数据类型:总共分四大类有八种 四大类:整数,浮点数.字符.布尔 一.整数包含以下 数 ...

  4. [应用软件] VMware Workstation 12.0.0 Pro 正式版下载【附注册机+注册码】

    软件信息 软件名称: VMware Workstation 软件版本: 12 软件大小: 300 MB 软件语言: 简体中文 更新时间: - 软件授权: 免费 软件类别: 安装版 运行环境: WinX ...

  5. 22.1.7 master公式及O(NLogN)的排序

    22.1.7 master公式及O(NLogN)的排序 1 master 公式 (1) 写公式 T(N) = a * T(N/b) + O(N^d); master公式用来求递归行为的时间复杂度,式中 ...

  6. spring-boot-learning 缓存之redis

    什么是BSD协议: BSD是"Berkeley Software Distribution"的缩写,意思是"伯克利软件发行版". BSD开源协议是一个给于使用者 ...

  7. vue单文件组件data选项的函数体获取vue实例对象

    因配置的关系,导致 vue的data选项中存在事件.而事件无法获取 vue 的实例对象:项目是单文件形式的,以下代码只是例子 new Vue({ el:..., data:{ a: { onevent ...

  8. Altium Designer 设置多层方法及各层介绍

    因为PCB板子的层分类有很多,所以通过帮助大家能更好地理解PCB的结构,所以把我所知道的跟大家分享一下 1.PCB各层简介 1. Top Layer顶层布线层(顶层的走线) 2. Bottom Lay ...

  9. AngularJS的核心对象angular上的方法全面解析(AngularJS全局API)

    总结一下AngularJS的核心对象angular上的方法,也帮助自己学习一下平时工作中没怎么用到的方法,看能不能提高开发效率.我当前使用的Angularjs版本是1.5.5也是目前最新的稳定版本,不 ...

  10. java中请给出一个return this的例子。

    [新手可忽略不影响继续学习]下面例子中setYear中的return this;返回了一个指向对象的指针,this.setMonth(8).setDay(20);是合法的,如果像原来的例子一样什么都不 ...