fpm工具来制作rpm包软件
第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 ***
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包软件的更多相关文章
- fpm制作rpm包
一.前言 在企业中我们有事安装软件包.部分都是源码安装,如nginx安装路径都已经固化了,但实际业务中,我们都是把软件包安装到固定目录下,不满足需要,这是其一.其二,编译安装很耗时,比如mysql,特 ...
- 利用fpm制作rpm包
使用fpm制作rpm包 安装如下 [root@web01 ~]# yum install -y gcc zlib zlib-devel wget http://ruby.taobao.org/mirr ...
- fpm 制作rpm包
使用fpm命令制作rpm包并安装 工作中有如下情况需要将文件打包rpm: 避免重复工作,将源码程序打包为rpm 使用yum发布项目,项目打包为rpm 将自己写好的程序打包为rpm,提供给用户下载 其他 ...
- linux制作RPM包
制作rpm包 1.制作流程1.1 前期工作 1)创建打包用的目录rpmbuild/{BUILD,SPECS,RPMS, SOURCES,SRPMS} 建议使用普通用户,在用户家目录中创建 2)确定好制 ...
- 制作RPM包
RPM包制作过程 1.1 前期工作 1)创建打包用的目录rpmbuild/{BUILD,SPECS,RPMS, SOURCES,SRPMS} 建议使用普通用户,在用户家目录中创建 2)确定好制作的对象 ...
- 烂泥:Linux源码包制作RPM包之Apache
本文由秀依林枫提供友情赞助,首发于烂泥行天下 公司服务器比较多,需要把apache源码包制作成rpm包,然后放到公司内网yum源上进行下载安装.apache的rpm包安装方式比源码安装方式比较快,这能 ...
- 手动制作rpm包
制作RPM包的过程,简单的说,就是为制作过程提供一个“工作车间”,即一个目录,里面需要包含以下几个子目录: BUILD ————编译相关源码包时的工作目录: RPMS — ...
- 速成制作rpm包
FPM 由于很多软件在安装时需要编译,这会浪费不少的时间,为了提升部署效率,于是就想到制作rpm包.通常rpm包的制作是使用rpmbuild命令来制作,但是你需要知道它的语法,比较繁琐.这就用到了FP ...
- centos6上使用fpm打python2.7 rpm包并兼容python2.6
centos6上使用fpm打python2.7 rpm包并兼容python2.6 作者 运维小兵_加油 关注 2016.09.22 00:28 字数 501 阅读 45评论 0喜欢 1 工作中我们常常 ...
随机推荐
- 浅析Redis基础数据结构
Redis是一种内存数据库,所以可以很方便的直接基于内存中的数据结构,对外提供众多的接口,而这些接口实际上就是对不同的数据结构进行操作的算法,首先redis本身是一种key-value的数据库,对于v ...
- springmvc对前台参数的接收
一.基本数据类型的接收 代码: @RequestMapping("/selectRegion") public BaseResult<?> method(String ...
- spring-boot-learning-RabbitMQ
为什么需要MQ??? 异步处理: 场景: 用户注册后,需要发注册邮件和注册短信,传统的做法有两种 1.串行的方式 2.并行的方式` 用户注册-发送注册邮箱-发送注册短信都完成之后才结束返回给客户端 邮 ...
- java-jdbc-all
jdbc相关解析 JDBC(Java DataBase Connectivity,Java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语 ...
- 用 wait-notify 写一段代码来解决生产者-消费者问题?
只要记住在同步块中调用 wait() 和 notify()方法,如 果阻塞,通过循环来测试等待条件.
- SpringAop实现原理及代理模式
Spring Aop的原理 Spring的AOP就是通过动态代理实现的.当为某个Bean或者某些Bean配置切面时,Spring会为其创建代理对象,当调用该对象的某个方法时,实际是调用生成的代理类的对 ...
- python学习笔记(十)——进程间通信
python 在进程间通信时有很多方式,比如使用Queue的消息队列,使用 pip的管道通信,share memory 共享内存或 semaphore 信号量等通信方式. 这里我们演示一下通过消息队列 ...
- 对Flex布局的总结与思考
阅读本文之前最好对flex布局有基本了解,可以通过"参考资料"中列举的资源来学习. flex布局规范的设计目标 一维布局模型(one-dimensional layout mode ...
- [译] 沙箱中的间谍 - 可行的 JavaScript 高速缓存区攻击
原文 The Spy in the Sandbox – Practical Cache Attacks in Javascript 相关论文可在 https://github.com/wyvernno ...
- ES6-11学习笔记--类与继承
ES5 中的类与继承: 类的定义: function People(name, age) { // this指向当前实例化对象 console.log(this); // 实例属性 this.name ...