第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. Fiddler修改接口下行数据,mock测试

    应用场景:在不修改服务器代码的情况下,临时改变接口下行数据值,便于查看界面效果.. 使用工具:Fiddler 使用方法:连接Fiddler,使用代理. Fiddler配置方法如下: 1.定位到Fidd ...

  2. First Note

    第一篇博客 入驻博客园.

  3. SpringDoc-OpenApi与Fastjson冲突——FastJsonHttpMessageConverter对String的默认处理

    我的项目中默认是这样使用FastJsonHttpMessageConverter的: @Override public void configureMessageConverters(List< ...

  4. phpcms手工注入教程

    目标服务器(靶机):192.168.1.27 目标网站:http://192.168.1.27:8083 步骤: 一.靶机操作 1.进入靶机,查看IP地址: 开始-运行,输入cmd回车,出现命令行窗口 ...

  5. XML常用解析API有哪几种?

    XML常用解析API有JAXP.JDOM.Dom4j等. JAXP是Java API for XML Processing的英文字头缩写,中文含义是:用于XML文档处理的使用Java语言编写的编程接口 ...

  6. Java 中的同步集合与并发集合有什么区别?

    同步集合与并发集合都为多线程和并发提供了合适的线程安全的集合,不过并发 集合的可扩展性更高.在 Java1.5 之前程序员们只有同步集合来用且在多线程并发 的时候会导致争用,阻碍了系统的扩展性.Jav ...

  7. 什么是持续集成(CI)?

    持续集成(CI)是每次团队成员提交版本控制更改时自动构建和测试代码的过程. 这鼓励开发人员通过在每个小任务完成后将更改合并到共享版本控制存储库来共 享代码和单元测试.

  8. solr集群搭建,zookeeper集群管理

    1. 第一步 把solrhome中的配置文件上传到zookeeper集群.使用zookeeper的客户端上传. 客户端命令位置:/root/solr-4.10.3/example/scripts/cl ...

  9. 使用Ansible部署openstack平台

    使用Ansible部署openstack平台 本周没啥博客水了,就放个云计算的作业上来吧(偷个懒) 案例描述 1.了解高可用OpenStack平台架构 2.了解Ansible部署工具的使用 3.使用A ...

  10. (stm32学习总结)—SPI-FLASH 实验

    SPI总线 SPI 简介 SPI 的全称是"Serial Peripheral Interface",意为串行外围接口,是Motorola 首先在其 MC68HCXX 系列处理器上 ...